JSON架构到GraphQL架构转换器

时间:2016-07-12 21:50:55

标签: swagger graphql jsonschema

是否有任何适配器将JSON Schema模式(例如Swagger)转换为GraphQL模式? 甚至还有关于REST http://graphql.org/blog/rest-api-graphql-wrapper/包装的官方文章,但通常已经描述过REST,而Swagger是最流行的格式。 如果已经存在实施,我不想自己编写。

3 个答案:

答案 0 :(得分:13)

几个月前,我实际上花了一些时间来尝试这个。您可以在此处阅读详细说明结果的帖子: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,将单个和多个资源端点充当根查询字段通常是有意义的。

答案 1 :(得分:7)

我还写了一个库,如果你使用Swagger,它允许你包装现有的REST API。

https://github.com/yarax/swagger-to-graphql

它基本上将Swagger模式映射到GraphQL类型。

还有一篇关于这种方法和库https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184

的文章

答案 2 :(得分:0)

同时已实现了多种工具,可将JSON模式转换为GraphQL模式: