Преобразователи схемы JSON в схему GraphQL
есть ли адаптеры, которые преобразуют схемы схемы JSON (e.g от Swagger) до схем GraphQL? Существует даже официальная статья об обертывании вокруг REST http://graphql.org/blog/rest-api-graphql-wrapper/, но обычно отдых уже описан, и 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
в принципе, вы просто конвертируете один формат данных в другой, а затем вам нужно добавить некоторые отношения между данными (внешние ключи, идентификаторы и т. д.) и добавить некоторые корневые запросы для создания точки входа. В случае REST API часто имеет смысл использовать конечные точки одного и нескольких ресурсов в качестве корневых полей запроса.
также я написал библиотеку, которая позволяет вам обернуть существующий REST API, если вы используете Swagger.
https://github.com/yarax/swagger-to-graphql
это в основном делает Swagger
сопоставление схемы с типами GraphQL.
и есть статья об этом подходе и библиотеке https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184