为Tartiflette Python GraphQL引擎提供ASGI支持
项目描述
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配置。选项:path
、default_query
、default_headers
、default_variables
、template
。
变更
- 利用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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e9a230a6c20d91f80813c0abaedd93e37b0b3d625b8d3497bef063b87c0b62e1 |
|
MD5 | c3e9e36dd0b18591c7f9144ecaa9abad |
|
BLAKE2b-256 | 2003c6638e8721f99799f89aafabbeca3bee9b4d07a6dc05cb905d53a6117cf4 |
关闭
tartiflette_asgi-0.12.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1c895b5dc11559cc745cef08a210088997e6d23db731835e0af92ceccf817d67 |
|
MD5 | 4a18d53aa7f9daef120653daba25c3cb |
|
BLAKE2b-256 | 02b37e303b0f9d56d6d14687f58e49a3a394b9644b64836d2c15861abd982ab4 |