为您的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 |