JSON架构到GraphQL架构转换器

问题描述 投票:14回答:2

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

swagger graphql jsonschema
2个回答
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,将单个和多个资源端点充当根查询字段通常是有意义的。


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的文章


0
投票

同时,已经实现了几个工具将JSON Schema转换为GraphQL Schema:

© www.soinside.com 2019 - 2024. All rights reserved.