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