Convertir JSON en Schema GraphQL en Ligne
Genere des schemas GraphQL depuis ton JSON automatiquement, directement dans le navigateur.
A quoi ca sert
JSON vers schema GraphQL
Compatible Apollo Server
Schema pret a utiliser dans Apollo Server, GraphQL Yoga, Pothos, Nexus ou n'importe quelle implementation GraphQL.
100% prive
Ton JSON d'API est traite uniquement dans ton navigateur. Les structures de donnees sensibles ne quittent jamais ton appareil.
Types corrects
Detecte String, Int, Float, Boolean, ID. Les objets imbriques generent leurs propres types. Les tableaux sous forme de listes [Type].
Instantane
Schema GraphQL pret en quelques millisecondes. Sans inscription, sans attente, sans limites.
Comment ça marche
Trois étapes, sans complications
Colle ton JSON
Colle n'importe quel objet JSON. L'outil analyse la structure et genere les types GraphQL correspondants.
Schema GraphQL genere
Tu obtiens des types GraphQL avec tous les champs correctement types : String, Int, Float, Boolean et ID. Les objets imbriques generent leurs propres types.
Copie et utilise dans Apollo Server
Copie le schema et colle-le dans ton serveur GraphQL (Apollo Server, GraphQL Yoga, Pothos) comme point de depart.
FAQ
Des questions ?
GraphQL est un langage de requete pour les API developpe par Facebook (aujourd'hui Meta) en 2012 pour un usage interne, puis publie comme specification open source en 2015. Il a ete cree pour resoudre les limites de REST dans les applications mobiles : le sur-chargement (recevoir plus de donnees que necessaire), le sous-chargement (avoir besoin de plusieurs requetes) et l'absence de contrat type. La premiere implementation etait dans le client iOS de Facebook. Aujourd'hui GraphQL est utilise par GitHub, Twitter, Shopify, Airbnb, Pinterest et des milliers d'entreprises. La specification est maintenue par la GraphQL Foundation (partie de la Linux Foundation).
En GraphQL, type definit la structure des donnees que le serveur peut renvoyer (dans les queries et les mutations), tandis qu'input definit la structure des donnees que le client peut envoyer (arguments des mutations). Par exemple, type User { id: ID!, name: String!, email: String! } definit l'objet User retournable, tandis qu'input CreateUserInput { name: String!, email: String! } definit les champs acceptes par une mutation createUser. Les types peuvent avoir des resolvers qui calculent des champs dynamiquement ; les inputs sont de simples conteneurs de donnees. Cet outil genere des types pour modeliser des reponses JSON existantes.
GraphQL definit 5 types scalaires primitifs dans la specification : String (texte UTF-8), Int (entier signe sur 32 bits), Float (decimal en double precision), Boolean (true/false) et ID (identifiant unique, represente comme String ou Int). Les serveurs GraphQL peuvent definir des scalaires personnalises supplementaires : Date, DateTime, URL, Email, JSON, UUID, etc. Par exemple, le package graphql-scalars (pour Node.js) offre plus de 50 scalaires personnalises. Cet outil utilise les 5 scalaires standard pour une compatibilite maximale.
En GraphQL, chaque objet imbrique dans le JSON devient un type separe. Si le JSON contient {"order": {"product": {"id": 1, "name": "Widget"}}}, il genere : type RootType { order: Order }, type Order { product: Product }, type Product { id: Int, name: String }. Cela reflate la nature du schema GraphQL : tous les types sont nommes et reutilisables. Le meme type Product pourrait apparaitre dans plusieurs types parents. Les tableaux d'objets sont representes comme [Product] (liste de Product).
Un resolver est une fonction qui sait comment recuperer les donnees pour un champ specifique du schema. Dans Apollo Server, chaque champ de chaque type peut avoir un resolver. Si aucun n'est defini, Apollo utilise le DefaultFieldResolver qui renvoie simplement la propriete du meme nom de l'objet parent. Les resolvers permettent aux donnees de provenir de plusieurs sources : base de donnees, autre API, cache ou calcul en temps reel. Le schema GraphQL (genere par cet outil) definit le contrat ; les resolvers implementent la facon de le respecter.
Adoption de GraphQL, Apollo Server, schema-first vs code-first et migration de REST vers GraphQL
GraphQL a ete rendu open source par Facebook en juillet 2015 et a rapidement cree un ecosysteme vibrant. Apollo GraphQL (fonde en 2016) a cree Apollo Server et Apollo Client, devenant ainsi l'implementation de reference. En 2018, GitHub a migre son API publique de REST v3 vers GraphQL v4, une etape cle validant GraphQL pour les API de production a grande echelle. La GraphQL Foundation a ete creee en 2019 sous la Linux Foundation pour standardiser la specification. En 2024, GraphQL est la deuxieme specification d'API la plus utilisee apres REST, presente dans la plupart des startups et dans de nombreuses entreprises du Fortune 500.
Il existe deux approches principales pour construire des API GraphQL : schema-first et code-first. En schema-first, tu definis d'abord le schema SDL (Schema Definition Language) puis tu implmentes les resolvers. C'est l'approche d'origine la plus transparente : le contrat de l'API est visible et modifiable sous forme de texte. En code-first, tu definis le schema par le code (TypeScript dans le cas de Nexus ou Pothos) : les types sont definis comme des objets JavaScript/TypeScript et le schema SDL est genere automatiquement. Le code-first est prefere quand on recherche un typage fort de bout en bout avec TypeScript. Cet outil genere du SDL (schema-first).
La migration de REST vers GraphQL est un processus progressif que beaucoup d'entreprises abordent avec le schema BFF (Backend For Frontend) : au lieu de remplacer les API REST existantes, une couche GraphQL est ajoutee pour agreger plusieurs endpoints REST. Ce schema, popularise par Netflix et Airbnb, permet d'adopter GraphQL incrementalement sans perturber les services existants. GraphQL Federation (Apollo) va plus loin : il permet de composer plusieurs services GraphQL en un graphe unifie, permettant des architectures de supergraph ou chaque microservice expose son propre sous-graphe.