跳转到主要内容

为Tartiflette Python GraphQL引擎提供ASGI支持

项目描述

tartiflette-asgi logo

Build status Package version Code style

tartiflette-asgi 是一个包装器,为 Tartiflette Python GraphQL 引擎提供 ASGI 支持。

它非常适合通过 HTTP 提供GraphQL API,或将 GraphQL API 端点添加到现有的 ASGI 应用程序(例如 FastAPI、Starlette、Quart 等)。

完整文档可在: https://tartiflette.github.io/tartiflette-asgi 查看

需求

tartiflette-asgi 兼容

  • Python 3.6+。
  • Tartiflette 1.x。

快速入门

首先,按照 Tartiflette教程 安装 Tartiflette 的外部依赖项。

然后,您可以使用 pip 安装 Tartiflette 和 tartiflette-asgi

pip install tartiflette "tartiflette-asgi==0.*"

您还需要一个 ASGI 网络服务器。这里我们将使用 Uvicorn

pip install uvicorn

创建一个公开 TartifletteApp 实例的应用程序

from tartiflette import Resolver
from tartiflette_asgi import TartifletteApp

@Resolver("Query.hello")
async def hello(parent, args, context, info):
    name = args["name"]
    return f"Hello, {name}!"

sdl = "type Query { hello(name: String): String }"
app = TartifletteApp(sdl=sdl, path="/graphql")

将此文件保存为 graphql.py,然后启动服务器

uvicorn graphql:app

发送包含 GraphQL 查询的 HTTP 请求

curl http://localhost:8000/graphql -d '{ hello(name: "Chuck") }' -H "Content-Type: application/graphql"

您应该得到以下 JSON 响应

{ "data": { "hello": "Hello, Chuck!" } }

要了解更多关于使用 tartiflette-asgi 的信息,请查阅文档:https://tartiflette.github.io/tartiflette-asgi

贡献

想要贡献?太好了!请确保阅读我们的 贡献指南

变更日志

此项目的更改记录在 变更日志 中。

许可证

MIT

变更日志

本项目所有重大变更将记录在此文件中。

格式基于Keep a Changelog,本项目遵循语义化版本控制

0.12.0 - 2022-05-13

新增

  • 添加对查询参数中变量的支持。(Pull #176)

0.11.0 - 2021-09-03

新增

  • 添加对Tartiflette 1.4.x的官方兼容性。(Pull #153)

变更

  • 将Starlette的依赖更新到0.16.*。(Pull #154)
  • 将httpx的要求更新到0.19.*(Pull #159)

0.10.0 - 2021-01-19

新增

  • 添加对Tartiflette 1.3.x的官方兼容性。(Pull #132)

0.9.0 - 2020-06-10

移除

  • 移除已弃用的mount辅助模块。建议使用ASGI框架的挂载机制。(Pull #119)

变更

  • 将Starlette的依赖更新到0.13.*。(Pull #106)
  • 将内部模块转换为私有命名。所有公共API应通过顶层tartiflette_asgi包访问。(Pull #117)

新增

  • 添加对Starlette 0.13.*的兼容性。(Pull #106)

0.8.0 - 2020-06-04

新增

  • 添加对Tartiflette 1.2.x的支持。(Pull #115)

修复

  • 修复在ASGI子挂载时GraphiQL订阅端点的问题。(Pull #98)
  • 修复在HTTPS上服务GraphiQL时的协议不匹配错误。(Pull #114)

0.7.1 - 2019-10-28

修复

  • 现在,包含无效JSON的请求将返回400 Bad Request错误响应,而不是500 Internal Server Error。(Pull #81)

0.7.0 - 2019-10-27

变更

  • 将项目重命名为tartiflette-asgi

0.6.0 - 2019-10-18

新增

  • 添加对Tartiflette 1.x的支持。(Pull #58)
  • 官方支持Python 3.8。(Pull #80)

移除

  • 放弃对Tartiflette 0.x的支持。(Pull #58)

0.5.2 - 2019-10-09

新增

  • 添加对Python 3.8的支持。(Pull #55)

修复

  • 现在,类型注解可以被mypy正确检测。(Pull #66)
  • 修复了一个阻止GraphiQL网络界面在应用程序挂载在父ASGI应用上时进行查询的bug。(Pull #51)

0.5.1 - 2019-07-16

修复

  • 修复了一个阻止在未启用订阅时访问GraphiQL界面的bug。

0.5.0 - 2019-07-12

新增

  • WebSocket订阅,可通过在TartifletteApp上使用新的subscriptions选项进行配置。
  • 使用TartifletteApp上新的context选项将额外的上下文传递给解析器。

0.4.0 - 2019-07-04

新增

  • 支持Tartiflette 0.12.x。
  • 添加一个带有子挂载辅助的mount模块。
  • 添加mount.starlette()

变更

  • 由于Tartiflette 0.12中的新engine cooking API,现在TartifletteApp包括一个负责构建GraphQL引擎的启动事件处理器。如果子挂载,必须在父ASGI应用上注册。模块中的辅助器会为您处理。

移除

  • 放弃对Tartiflette 0.11.x及以下版本的支持。

0.3.0 - 2019-07-03

新增

  • 通过GraphiQL辅助器进行GraphiQL配置。选项:pathdefault_querydefault_headersdefault_variablestemplate

变更

  • 利用Starlette更多功能的内部重构。
  • 文档改进。

0.2.0 - 2019-06-10

新增

  • 支持starlette>=0.12(之前为>=0.12.0b3)。
  • 安装tartiflette-asgi时,现在也将安装Tartiflette。

变更

  • 默认的path现在为""(之前为"/")。
  • 现在,请求可以通过context["req"]在GraphQL上下文中访问(之前为context["request"])。
  • 如果没有发生错误,响应中不再存在errors字段(之前为None)。

修复

  • TartifletteApp上的URL匹配更稳健。

0.1.1 - 2019-04-28

修复

  • 添加缺失的graphiql.html包资源。

0.1.0 - 2019-04-26

新增

功能

  • TartifletteApp ASGI应用。
  • 内置GraphiQL客户端。

与项目相关的添加

  • 包设置。
  • 变更日志。
  • 贡献指南。
  • README和文档。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

tartiflette-asgi-0.12.0.tar.gz (15.3 kB 查看哈希值)

上传于

构建分发

tartiflette_asgi-0.12.0-py2.py3-none-any.whl (15.1 kB 查看哈希值)

上传于 Python 2 Python 3

由以下支持