为您的aiohttp应用程序添加GraphQL支持
项目描述
aiohttp-graphql
为您的 GraphQL 应用程序添加 aiohttp 支持。
基于 flask-graphql,由 Syrus Akbary 开发,以及 sanic-graphql,由 Sergey Porivaev 开发。
用法
只需使用来自 aiohttp_graphql
的 GraphQLView
视图。
from aiohttp_graphql import GraphQLView
GraphQLView.attach(app, schema=Schema, graphiql=True)
# Optional, for adding batch query support (used in Apollo-Client)
GraphQLView.attach(app, schema=Schema, batch=True)
这将为您添加一个 /graphql
端点(通过将 route_path='/mypath'
传递给 GraphQLView.attach
可自定义)。
注意: GraphQLView.attach
只是一个方便的函数,同样可以实现相同的功能
gql_view = GraphQLView(schema=Schema, **kwargs)
app.router.add_route('*', gql_view, name='graphql')
值得注意的是,GraphQLView
的 "视图函数" 包含在 GraphQLView.__call__
中。因此,当您创建一个实例时,该实例可以用请求对象作为唯一的位置参数调用。为了说明
gql_view = GraphQLView(schema=Schema, **kwargs)
gql_view(request) # <-- the instance is callable and expects a `aiohttp.web.Request` object.
支持选项
schema
:当视图接收到有效的请求时希望执行的GraphQLSchema
对象。executor
:用于执行查询的Executor
。如果提供了AsyncioExecutor
实例,则在该实例的循环中异步执行查询。root_value
:希望提供给executor.execute
的root_value
。context
:传递给graphql()
函数的context
值。默认设置为包含键request
的字典。pretty
:是否希望将响应以格式化后的JSON显示。graphiql
:如果设置为True
,可以直接从浏览器加载时显示GraphiQL(一个用于调试和探索的有用工具)。graphiql_version
:提供的graphiql
包的版本。graphiql_template
:注入Jinja模板字符串以自定义GraphiQL。middleware
:用于graphql-python的自定义中间件。batch
:将GraphQL视图设置为批处理(用于在Apollo-Client或[ReactRelayNetworkLayer]中使用)jinja_env
:设置用于处理GraphiQL模板的jinja环境。如果启用了Jinja的异步模式(通过enable_async=True
),则使用Template.render_async
而不是Template.render
。如果未设置环境,则回退到简单的基于正则表达式的渲染器。max_age
:为预检请求设置响应头Access-Control-Max-Age
。encoder
:用于响应的编码器(合理地默认为graphql_server.json_encode
)。error_formatter
:用于响应的错误格式化程序(合理地默认为graphql_server.default_format_error
)。enable_async
:是否启用async
模式。subscriptions
:GraphiQL的socket端点,用于在graphql-ws中使用订阅。
测试
使用pytest
进行测试。
git clone https://github.com/graphql-python/aiohttp-graphql
cd aiohttp-graphql
# Create a virtualenv
python3.6 -m venv env && source env/bin/activate # for example
pip install -e .[test]
pytest
虽然测试模式与sanic-graphql的测试类似,但已完全重构以利用pytest-asyncio
,符合PEP-8,并通过pytest fixtures提高可读性。对于使用测试,请查看它们。
许可证
项目部分版权由aiohttp-graphql持有,作为项目flask-graphql和sanic-graphql的一部分,由Syrus Akbary持有。所有其他关于此项目aiohttp-graphql的主张由Devin Fee持有。
本项目采用MIT许可证。
项目详情
关闭
aiohttp-graphql-1.1.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 29035589ca0929f5dc19b09461db0a2563db0166a6efcf22e23498a44e45040e |
|
MD5 | 1f1d9af870c563f0dc0e9de678b6369e |
|
BLAKE2b-256 | fce7953018ff0af70c515efff12175240ca1d4f9a47d2681eeba656a37e3db02 |