Maison interface Web js tutoriel De REST à GraphQL : pourquoi et comment j'ai fait le changement

De REST à GraphQL : pourquoi et comment j'ai fait le changement

Dec 31, 2024 pm 08:48 PM

En tant qu'ingénieur logiciel avec 4 ans d'expérience dans la création d'API REST, j'ai toujours apprécié la simplicité et la fiabilité que REST apporte. Qu'il s'agisse de concevoir des points de terminaison ou de structurer des réponses, REST était ma solution de prédilection.

Mais plus tôt cette année, tout a changé. J'ai été chargé de me lancer dans un projet qui nécessitait de gérer des sources de données volumineuses, complexes et interdépendantes. Il ne s'agissait pas seulement de récupérer une liste d'utilisateurs ou de mettre à jour un seul enregistrement, cela exigeait de la flexibilité, de la précision et une efficacité à une échelle que REST avait du mal à fournir.

Entrez GraphQL. ?

Au début, j'étais sceptique. Pourquoi réparer quelque chose qui n’est pas cassé ? Mais au fur et à mesure que j’approfondissais, GraphQL n’a pas seulement répondu aux besoins du projet : il a redéfini ma façon de penser les API. Avec sa capacité à :

  • Renvoyer les données dans une structure flexible définie par le client,
  • Fonctionner via un point de terminaison d'URL unique,
  • Rejeter les requêtes invalides basées sur un schéma fortement typé, et
  • Fournir les données dans formats prédéterminés et mutuellement compris,

GraphQL est rapidement devenu plus qu'une solution : il est devenu mon nouveau standard en matière de conception d'API.

Cela dit, le but de cet article est de ne pas discréditer les API REST au profit de GraphQL. En fait, je pense que les deux peuvent se compléter à merveille. REST joue toujours un rôle crucial dans mes projets, notamment pour des cas d'utilisation spécifiques où un point de terminaison REST dédié est plus pratique qu'une requête GraphQL.

Dans cet article, je partagerai :

  1. Pourquoi j'ai fait le passage de REST à GraphQL,
  2. Les avantages que j'ai expérimentés de première main, et
  3. Un guide simple pour vous aider à créer votre tout premier serveur GraphQL.

Que vous soyez un débutant curieux de connaître GraphQL ou un ingénieur expérimenté cherchant à faire la transition, cet article vous montrera pourquoi GraphQL mérite votre attention et comment il peut transformer vos projets sans remplacer complètement REST.

Mon parcours de REST à GraphQL

Pendant des années, les API REST étaient mon gagne-pain. Je comptais sur eux pour créer des systèmes robustes, gérer les données et fournir des fonctionnalités. Mais à mesure que mes projets devenaient plus complexes, des fissures ont commencé à apparaître.
From REST to GraphQL: Why and How I Made the Switch

Défis liés aux API REST

Une frustration récurrente était la récupération excessive et insuffisante des données. Soit j’obtiendrais trop d’informations dont je n’avais pas besoin, soit je devrais faire plusieurs demandes pour obtenir tout ce que j’avais fait. La gestion de nombreux points de terminaison ajoute à la complexité, faisant des mises à jour et de la maintenance une corvée.

Découverte de GraphQL

Plus tôt cette année, j'ai rejoint un projet qui devait travailler avec de grandes sources de données interconnectées. REST ne suffisait pas, et l'équipe a suggéré GraphQL. Au départ, j'étais sceptique, mais la promesse de demander exactement ce qui était nécessaire à partir d'un seul point de terminaison m'a intrigué.

Premières impressions de GraphQL

Commencer avec GraphQL n’a pas été sans défis. Les schémas et les résolveurs semblaient intimidants, mais la flexibilité et le contrôle qu'ils offraient en valaient la peine. Au fil du temps, j'ai réalisé à quel point il résolvait de manière transparente les problèmes auxquels je faisais face avec REST.

Bien que j'utilise toujours REST pour des cas spécifiques, GraphQL est devenu mon outil préféré pour répondre aux exigences de données complexes et dynamiques.

From REST to GraphQL: Why and How I Made the Switch

Pourquoi j'ai fait le changement

Au fur et à mesure que j'approfondissais GraphQL, quelques avantages clés sont ressortis, rendant la transition une évidence :

  • Flexibilité : Avec GraphQL, je pouvais récupérer exactement les données dont j'avais besoin, ni plus, ni moins. Plus besoin de jongler avec plusieurs points de terminaison ou de gérer une récupération excessive.
  • Efficacité : Une seule requête peut remplacer plusieurs appels d'API REST, améliorant ainsi considérablement les performances. Cela a eu un impact particulièrement important dans les applications comportant des données complexes et interdépendantes.
  • Expérience du développeur : Le schéma fortement typé, l'introspection et les meilleurs outils de débogage ont rendu le développement plus fluide et moins sujet aux erreurs.
  • Support de l'écosystème et de la communauté : Des outils comme Apollo Client et GraphQL ont enrichi l'expérience, facilitant l'apprentissage et l'intégration de GraphQL dans mon flux de travail.

Comment j'ai effectué le changement

Le voyage n’a pas été sans défis, mais le diviser en étapes a rendu la transition gérable :

Étape 1 : Comprendre les bases de GraphQL

J'ai commencé par apprendre les concepts de base :

  • Requêtes pour récupérer des données.
  • Mutations pour modifier les données.
  • Résolveurs pour connecter les définitions de schéma aux sources de données réelles.

Cette compréhension fondamentale a été essentielle à la création de mon premier serveur GraphQL.

Étape 2 : Créer mon premier serveur GraphQL

Pour mettre la main à la pâte, j'ai construit un serveur simple en utilisant Node.js et Apollo Server. Le processus ressemblait à ceci :

  1. Configurer un projet Node.js : Initialiser le projet avec npm init et ajouter les dépendances essentielles.
  2. Installer les dépendances GraphQL : Apollo-server et graphql installés.
  3. Écrire un schéma de base et un résolveur : Définir un schéma pour décrire les données et écrire des résolveurs pour les récupérer.
  4. Exécutez le serveur : Lancez-le et testez les requêtes à l'aide de GraphQL.

Le voir fonctionner pour la première fois était exaltant ? L’effort en valait la peine.

Étape 3 : Transition des API REST existantes

L'étape suivante consistait à intégrer GraphQL dans un projet REST existant. J'ai suivi une approche progressive :

  1. Points de terminaison REST clés identifiés à remplacer par des requêtes ou des mutations GraphQL.
  2. Création de schémas et de résolveurs GraphQL correspondants.
  3. Maintien des points de terminaison REST aux côtés de GraphQL pendant la transition pour garantir la stabilité.

Cette approche hybride m'a permis de déployer GraphQL progressivement sans perturber les fonctionnalités existantes.

Guide de démarrage rapide : créez votre premier serveur GraphQL

Démarrer avec GraphQL est plus simple qu'il n'y paraît. Voici un guide rapide pour configurer un serveur de base à l'aide de Node.js et Apollo Server :

Étape 1 : Installer les dépendances

Commencez par initialiser un projet Node.js et installer les packages nécessaires :

npm init -y  
npm install apollo-server graphql  
Copier après la connexion

Étape 2 : Définir un schéma et un résolveur

Créez un fichier appelé index.js et ajoutez le code suivant :

const { ApolloServer, gql } = require('apollo-server');  

// Simulated user data  
const users = [  
  { id: '1', name: 'John Doe', email: 'john@example.com' },  
  { id: '2', name: 'Jane Smith', email: 'jane@example.com' },  
  { id: '3', name: 'Alice Johnson', email: 'alice@example.com' },  
];  

// Define schema  
const typeDefs = gql`  
  type User {  
    id: ID  
    name: String  
    email: String  
  }  

  type Query {  
    users: [User]  
    user(id: ID!): User  
  }  
`;  

// Define resolvers  
const resolvers = {  
  Query: {  
    users: () => users,  
    user: (_, { id }) => users.find((user) => user.id === id),  
  },  
};  

// Create server  
const server = new ApolloServer({ typeDefs, resolvers });  

// Start server  
server.listen().then(({ url }) => {  
  console.log(`? Server ready at ${url}`);  
});  
Copier après la connexion

Étape 3 : Exécutez le serveur et testez

Démarrez le serveur avec :

node index.js  
Copier après la connexion

Ouvrez l'URL fournie dans votre navigateur ou dans un outil comme GraphQL et testez les requêtes :

Interroger tous les utilisateurs :

query {  
  users {  
    id  
    name  
    email  
  }  
}  
Copier après la connexion

Interroger un seul utilisateur par ID :

query {  
  user(id: "1") {  
    name  
    email  
  }  
}  
Copier après la connexion

From REST to GraphQL: Why and How I Made the Switch
Félicitations?? Vous venez de créer votre premier serveur GraphQL !

Leçons apprises

Le passage à GraphQL m'a appris des leçons inestimables :

Ce qui s'est bien passé

  • La transition a considérablement amélioré l'efficacité de la récupération des données. Fini la sous-récupération ou la sur-récupération !
  • Le schéma fortement typé réduit les erreurs d'exécution et facilite le débogage.
  • Les outils de l'écosystème (comme Apollo Client) ont amélioré la productivité des développeurs.

Ce que je ferais différemment

  • Apprenez progressivement : J'ai plongé la tête la première, ce qui était écrasant. Adopter une approche progressive et se concentrer d’abord sur les requêtes et les mutations aurait été plus fluide.
  • Commencez petit : Je commencerais par remplacer un seul point de terminaison REST par GraphQL pour avoir une idée du flux de travail.

Conseils pour les autres

  • N'abandonnez pas complètement REST : REST et GraphQL peuvent coexister. Utilisez REST pour les opérations simples et GraphQL pour les besoins de données complexes et interdépendants.
  • Tirez parti de la communauté : GraphQL dispose d'une communauté active et d'excellentes ressources. N’hésitez pas à demander de l’aide ou à apprendre des expériences des autres.

La transition vers GraphQL ne consiste pas seulement à changer d'outils, il s'agit de repenser la façon dont vous interagissez avec les données. Commencez petit, expérimentez et profitez du voyage !

REST vs GraphQL : une comparaison rapide

Lorsque vous décidez entre REST et GraphQL, comprendre les principales différences peut vous aider à faire le bon choix pour votre projet. Voici une ventilation rapide :

Fonctionnalité API REST GraphQL ête>
Feature REST API GraphQL
Data Fetching Fixed data structure for endpoints; can lead to over-fetching or under-fetching. Flexible queries; fetch exactly what you need.
Endpoint Management Multiple endpoints for different resources. Single endpoint for all queries and mutations.
Flexibility Limited flexibility; requires custom endpoints for specific data needs. Highly flexible; client defines data requirements.
Type Safety Relies on documentation; no built-in type enforcement. Strongly-typed schema ensures predictable data.
Error Handling Custom error formats; inconsistent across APIs. Standardized error responses from schema validation.
Tooling Varied and often endpoint-specific tools. Rich ecosystem with tools like Apollo, GraphQL, and Relay.
Récupération de données Structure de données fixe pour les points de terminaison ; peut conduire à une récupération excessive ou insuffisante. Requêtes flexibles ; récupérez exactement ce dont vous avez besoin. Gestion des points de terminaison Plusieurs points de terminaison pour différentes ressources. Point de terminaison unique pour toutes les requêtes et mutations. Flexibilité Flexibilité limitée ; nécessite des points de terminaison personnalisés pour des besoins de données spécifiques. Très flexible ; le client définit les exigences en matière de données. Type Sécurité S'appuie sur la documentation ; aucune application de type intégrée. Un schéma fortement typé garantit des données prévisibles. Gestion des erreurs Formats d'erreur personnalisés ; incohérent entre les API. Réponses d'erreur standardisées issues de la validation du schéma. Outillage Outils variés et souvent spécifiques aux points de terminaison. Un écosystème riche avec des outils comme Apollo, GraphQL et Relay.

Bien que les API REST soient fiables et largement prises en charge, GraphQL brille dans les scénarios nécessitant des données complexes et interdépendantes et de la flexibilité.
Approfondissez les différences dans mon article précédent

Conclusion

La transition de REST vers GraphQL a changé la donne pour moi. La flexibilité, l'efficacité et l'expérience améliorée des développeurs ont rendu mes projets plus robustes et évolutifs. Cela dit, je crois fermement que les API REST et GraphQL peuvent coexister, se complétant pour différents cas d'utilisation.

Si vous envisagez de faire le changement, je vous encourage à commencer petit, à expérimenter et à intégrer progressivement GraphQL dans votre pile. C’est un voyage qui vaut la peine d’être entrepris et j’ai hâte de voir comment vous vous l’approprierez.

Ressources pour commencer

Voici quelques outils et guides pour vous aider à vous plonger dans GraphQL :

  • Documentation GraphQL
  • Guide du serveur Apollo
  • Terrain de jeu GraphQL

From REST to GraphQL: Why and How I Made the Switch

Bentil ici ?
Êtes-vous passé de REST à GraphQL ou envisagez-vous de faire la transition ? Quels défis ou succès avez-vous rencontrés en cours de route ? N'hésitez pas à partager vos réflexions, questions ou expériences dans les commentaires ci-dessous. Grandissons et apprenons ensemble ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1670
14
Tutoriel PHP
1276
29
Tutoriel C#
1256
24
Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisation Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisation Apr 16, 2025 am 12:12 AM

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

De C / C à JavaScript: comment tout cela fonctionne De C / C à JavaScript: comment tout cela fonctionne Apr 14, 2025 am 12:05 AM

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

Javascript et le web: fonctionnalité de base et cas d'utilisation Javascript et le web: fonctionnalité de base et cas d'utilisation Apr 18, 2025 am 12:19 AM

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

JavaScript en action: Exemples et projets du monde réel JavaScript en action: Exemples et projets du monde réel Apr 19, 2025 am 12:13 AM

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Comprendre le moteur JavaScript: détails de l'implémentation Comprendre le moteur JavaScript: détails de l'implémentation Apr 17, 2025 am 12:05 AM

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python vs JavaScript: communauté, bibliothèques et ressources Python vs JavaScript: communauté, bibliothèques et ressources Apr 15, 2025 am 12:16 AM

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Python vs JavaScript: environnements et outils de développement Python vs JavaScript: environnements et outils de développement Apr 26, 2025 am 12:09 AM

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

Le rôle de C / C dans les interprètes et compilateurs JavaScript Le rôle de C / C dans les interprètes et compilateurs JavaScript Apr 20, 2025 am 12:01 AM

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.

See all articles