跳转到主要内容

为您的aiohttp应用程序添加GraphQL支持

项目描述

aiohttp-graphql

为您的 GraphQL 应用程序添加 aiohttp 支持。

基于 flask-graphql,由 Syrus Akbary 开发,以及 sanic-graphql,由 Sergey Porivaev 开发。

PyPI version Build Status Coverage Status

用法

只需使用来自 aiohttp_graphqlGraphQLView 视图。

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.executeroot_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模式。
  • subscriptionsGraphiQL的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-graphqlsanic-graphql的一部分,由Syrus Akbary持有。所有其他关于此项目aiohttp-graphql的主张由Devin Fee持有。

本项目采用MIT许可证。

项目详情


下载文件

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

源分发

aiohttp-graphql-1.1.0.tar.gz (19.2 kB 查看散列)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面