向sanic应用程序添加graphql支持

Sanic-GraphQL的Python项目详细描述


traviscoverallspypi

Sanic图形ql

GraphQL支持添加到Sanic应用程序中。

基于flask-graphqlSyrus Akbary

使用量

只需使用GraphQLView视图从sanic_graphql

fromsanic_graphqlimportGraphQLViewapp.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共享EventLoop

为了将sanic的eventloop传递给graphql的AsyncioExecutor,请使用before_startlistener:

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

支持的选项

  • schema:要视图的GraphQLSchema对象 在收到有效请求时执行。
  • context:作为context传递给^{tt10}的值。$ 功能。默认设置为dict,请求对象位于键request
  • root_value:要提供给的root_valueexecutor.execute
  • pretty:您是否希望正确打印响应 json。
  • executor:要用于执行查询的Executor。如果提供了AsyncioExecutor实例, 在执行器循环中异步执行查询。
  • graphiql:如果True,则可能存在 GraphiQL加载时 直接从浏览器(用于调试和 探索)。
  • graphiql_template:插入jinja模板字符串以自定义 格斗。
  • jinja_env:设置用于处理graphiql模板的jinja环境。如果jinja的异步模式被启用(通过enable_async=True),则使用 Template.render_async而不是Template.render。如果未设置环境,则回退到基于正则表达式的简单呈现器。
  • batch:将graphql视图设置为批处理(用于 Apollo-ClientReactRelayNetworkLayer

您还可以将GraphQLView子类化并覆盖 get_root_value(self, request)为每个 请求。

classUserRootValue(GraphQLView):defget_root_value(self,request):returnrequest.user

许可证

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

这个项目是由麻省理工学院授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java泛型和基类   ProcessBuilder或DefaultExecutor启动的“RunAs”子进程的java读取标准输出   java应用程序在尝试登录时突然停止   Java:神秘的Java未捕获异常处理程序[带代码]   java JavaFX NumberAxis自动范围无限循环   最新版本和旧版本冲突的java双Maven依赖关系   java如何导入带有部署变量类名的静态函数?   编译器构造不同的JDK更新会产生不同的Java字节码吗?   java无法在struts 1.1中上载任何超过250 MB大小的文件   java调整jcombobox下拉菜单的宽度   java如何在某些情况下忽略@SQLDelete注释   在Eclipse for Java EE developers edition中禁用HTML警告   java HttpUrlConnection重置请求属性   java@Provider资源未在rest应用程序中注册   java TOP N使用JPA连接   java在使用反射调用方法时区分int和Integer参数