是否有任何适配器将JSON Schema模式(例如Swagger)转换为GraphQL模式?甚至还有一篇关于REST http://graphql.org/blog/rest-api-graphql-wrapper/的包装的官方文章,但通常已经描述过REST,而Swagger是最流行的格式 . 如果已经存在实现,不想自己编写它 .
是否有任何适配器将JSON Schema模式(例如Swagger)转换为GraphQL模式?甚至还有一篇关于REST http://graphql.org/blog/rest-api-graphql-wrapper/的包装的官方文章,但通常已经描述过REST,而Swagger是最流行的格式 . 如果已经存在实现,不想自己编写它 .
2 回答
几个月前我实际上花了一些时间来尝试这个 . 你可以在这里阅读我的帖子详细说明结果: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,将单个和多个资源 endpoints 充当根查询字段通常是有意义的 .
我还写了一个库,如果你使用Swagger,它允许你包装现有的REST API .
https://github.com/yarax/swagger-to-graphql
它基本上将
Swagger
模式映射到GraphQL类型 .还有一篇关于这种方法的文章和图书馆https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184