web-dev-qa-db-fra.com

Convertisseurs de schéma JSON en schéma GraphQL

Existe-t-il des adaptateurs qui convertissent les schémas de schéma JSON (par exemple de Swagger) en schémas GraphQL? Il y a même un article officiel sur le bouclage REST http://graphql.org/blog/rest-api-graphql-wrapper/ , mais généralement REST déjà décrit et Swagger est le format le plus populaire pour cela. Je ne voudrais pas l'écrire par moi-même s'il existe déjà une implémentation.

14
Rax Wunter

J'ai également écrit une bibliothèque, qui vous permet d'envelopper votre API REST si vous utilisez Swagger.

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

Il fait essentiellement Swagger le mappage de schéma aux types GraphQL.

Et il y a un article sur cette approche et la bibliothèque https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184

7
Rax Wunter

J'ai mis du temps à essayer ça il y a quelques mois. Vous pouvez lire mon article détaillant les résultats ici: https://medium.com/apollo-stack/will-graphql-replace-rest-documentation-f1a55092ef9d#.m50im46o

Après avoir examiné de nombreux schémas Swagger disponibles en ligne, je pense que Swagger ou des langages de description d'API similaires peuvent être un bon point de départ pour définir un schéma GraphQL, mais ils ne contiennent souvent pas suffisamment d'informations pour générer un schéma par eux-mêmes. Plus précisément, il n'y a généralement pas suffisamment de données sur les relations entre les objets.

Si vous souhaitez démarrer à partir d'une description de schéma au format JSON, il vous suffit d'écrire du code qui boucle sur vos différents types de données dans Swagger et de générer des objets GraphQLObjectType. Vous pouvez voir une approche simple à cela dans l'exemple de référentiel pour le blog que j'ai lié ci-dessus: https://github.com/apollostack/swapi-rest-graphql/blob/951e50ec29732c93e7aa0bc6880210fdd1816a2f/schema.js#L28

Fondamentalement, vous convertissez simplement un format de données en un autre, puis vous devez ajouter des relations entre les données (clés étrangères, ID, etc.) et ajouter des requêtes racine pour créer un point d'entrée. Dans le cas d'une API REST, il est souvent judicieux que vos points de terminaison de ressources uniques et multiples agissent comme vos champs de requête racine.

13
stubailo

Pendant ce temps, plusieurs outils ont été mis en œuvre pour convertir un schéma JSON en schéma GraphQL:

1
Jakob