跳转到主要内容

为您的Sanic应用添加GraphQL支持

项目描述

travis coveralls pypi

Sanic-GraphQL

为您的GraphQL Sanic 应用添加支持。

基于 flask-graphql,由 Syrus Akbary 开发。

使用方法

只需使用来自 sanic_graphqlGraphQLView 视图。

from sanic_graphql import GraphQLView

app.add_route(GraphQLView.as_view(schema=Schema, graphiql=True), '/graphql')

# Optional, for adding batch query support (used in Apollo-Client)
app.add_route(GraphQLView.as_view(schema=Schema, batch=True), '/graphql/batch')

这将向您的应用程序添加 /graphql 端点。

与 Sanic 共享事件循环

为了将 Sanic 的事件循环传递给 GraphQL 的 AsyncioExecutor,请使用 before_start 监听器。

@app.listener('before_server_start')
def init_graphql(app, loop):
    app.add_route(GraphQLView.as_view(schema=Schema, executor=AsyncioExecutor(loop=loop)), '/graphql')

支持选项

  • schema:当视图收到有效请求时,要执行的 GraphQLSchema 对象。

  • context:传递给 graphql() 函数的 context 值。默认设置为包含请求对象(键为 request)的 dict

  • root_value:要提供给 executor.executeroot_value

  • pretty:是否要格式化输出 JSON 响应。

  • executor:用于执行查询的 Executor。如果提供了 AsyncioExecutor 实例,将在执行器的循环中异步执行查询。

  • graphiql:如果为 True,则可以从浏览器直接加载时显示 GraphiQL(一个用于调试和探索的有用工具)。

  • graphiql_template:注入 Jinja 模板字符串以自定义 GraphiQL。

  • jinja_env:设置用于处理 GraphiQL 模板的 Jinja 环境。如果 Jinja 的异步模式已启用(通过 enable_async=True),则使用 Template.render_async 而不是 Template.render。如果未设置环境,则回退到简单的基于正则表达式的渲染器。

  • batch:将 GraphQL 视图设置为批量(用于在 Apollo-ClientReactRelayNetworkLayer)中使用)。

您还可以继承 GraphQLView 并重写 get_root_value(self, request) 以使每个请求都有动态的根值。

class UserRootValue(GraphQLView):
    def get_root_value(self, request):
        return request.user

许可证

项目 sanic-graphql 的部分版权归 Syrus Akbary 所有,作为项目 flask-graphql 的一部分。项目 sanic-graphql 的其他版权归 Sergey Porivaev 所有。

本项目受 MIT 许可证许可。

项目详情


下载文件

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

源代码发行版

Sanic-GraphQL-1.2.0.tar.gz (7.5 kB 查看哈希值)

源代码

构建发行版

Sanic_GraphQL-1.2.0-py3-none-any.whl (8.2 kB 查看哈希值)

上传于 Python 3

由以下组织支持