JSON Schema 到 GraphQL 模式转换器 [关闭]
Posted
技术标签:
【中文标题】JSON Schema 到 GraphQL 模式转换器 [关闭]【英文标题】:JSON Schema to GraphQL schema converters [closed] 【发布时间】:2016-11-15 07:39:22 【问题描述】:是否有任何适配器将 JSON Schema 模式(例如从 Swagger)转换为 GraphQL 模式? 甚至还有一篇关于环绕 REST http://graphql.org/blog/rest-api-graphql-wrapper/ 的官方文章,但通常 REST 已经描述过,并且 Swagger 是它最流行的格式。 如果已经有实现,我不想自己写。
【问题讨论】:
完全合理的问题。 【参考方案1】:实际上,几个月前我花了一些时间来尝试这个。您可以在此处阅读我的帖子详细说明结果:https://medium.com/apollo-stack/will-graphql-replace-rest-documentation-f1a55092ef9d#.m50im46o0
在查看了许多在线可用的 Swagger 模式之后,我认为 Swagger 或类似的 API 描述语言可以作为定义 GraphQL 模式的良好起点,但它们通常不包含足够的信息来生成模式他们自己的。具体来说,通常没有足够的关于对象之间关系的数据。
如果您想从 JSON 格式的模式描述开始,您需要做的就是编写一些代码,在 Swagger 中循环您的不同数据类型,并生成 GraphQLObjectType
对象。您可以在我上面链接的博客文章的示例存储库中看到一个简单的方法:https://github.com/apollostack/swapi-rest-graphql/blob/951e50ec29732c93e7aa0bc6880210fdd1816a2f/schema.js#L28
基本上,您只是将一种格式的数据转换为另一种格式,然后您需要在数据之间添加一些关系(外键、ID 等),并添加一些根查询来创建入口点。对于 REST API,让您的单个和多个资源端点充当您的根查询字段通常是有意义的。
【讨论】:
【参考方案2】:我还写了一个库,如果你使用 Swagger,它允许你包装现有的 REST API。
https://github.com/yarax/swagger-to-graphql
它基本上将Swagger
模式映射到 GraphQL 类型。
还有一篇关于这种方法的文章和库https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184
【讨论】:
但这仅适用于类型对吗?可以映射完整的合约(消息参数等)吗? 映射 API 工作所需的一切【参考方案3】:同时已经实现了几个工具来将 JSON Schema 转换为 GraphQL Schema:
json-schema-to-graphql-types jsonschema2graphql json-schema-to-graphql-types-decorated【讨论】:
有谁知道是否有类似的Java工具?我在网上找遍了,一无所获。以上是关于JSON Schema 到 GraphQL 模式转换器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
无法从模式拼接中的另一个 schema.graphql 文件中的其他 schema.graphql 文件访问共享模式
使用 GraphiQL 或 GraphQL 端点生成 schema.json