为中继自动生成 graphql 模式(石墨烯服务器)

Posted

技术标签:

【中文标题】为中继自动生成 graphql 模式(石墨烯服务器)【英文标题】:Auto-generating a graphql schema for relay (Graphene server) 【发布时间】:2018-03-30 06:17:24 【问题描述】:

我是 Relay 的新手,正在尝试组合我的第一个应用程序。我已经有一个 GraphQL 服务器(使用 Graphene),它由 PostgreSQL DB 通过 SQLAlchemy 自动映射支持,并作为 Flask 应用程序发布。现在,我正在尝试将前端放在一起,看起来中继编译器在客户端需要一个 GraphQL 模式文件。我想知道是否有办法让这个模式文件动态自动生成,以及如何设置。

我使用https://github.com/kriasoft/react-static-boilerplate 作为我的应用程序的起点。

谢谢。

【问题讨论】:

【参考方案1】:

浏览完 Graphene 代码库后,我在 graphql-python 的 utils 模块中找到了 schema_printer,它为我完成了这项工作:

import json
from schema import schema
import sys
from graphql.utils import schema_printer

my_schema_str = schema_printer.print_schema(schema)
fp = open("schema.graphql", "w")
fp.write(my_schema_str)
fp.close()

【讨论】:

如何运行这个脚本?【参考方案2】:

对我来说,https://docs.graphene-python.org/projects/django/en/latest/introspection/ 很有帮助。 在我的例子中,架构是在 apiApp 的 schema.py 文件中定义的,因此检索 schema.json 的命令如下。

./manage.py graphql_schema --schema apiApp.schema.schema --out schema.json

【讨论】:

以上是关于为中继自动生成 graphql 模式(石墨烯服务器)的主要内容,如果未能解决你的问题,请参考以下文章

将json转换为石墨烯graphql响应

具有多 InputObjectType 的石墨烯突变

使用石墨烯和 SQLalchemy 为 GraphQL 设置权限很热门

Django 石墨烯中继限制对用户拥有的对象的查询

设置石墨烯中继节点和连接字段的权限

Python GraphQL 如何声明一个自引用的石墨烯对象类型