Sécurité de l'API

Qu'est-ce que GraphQL ?

GraphQL est un système efficace pour créer des interrogations destinées aux interfaces de programmation d'applications (API), avec une procédure d'opération incluse pour l'activation de ces interrogations sur vos données présentes. Ce système est apparu grâce aux efforts de Facebook en 2012 dans le but de relever des défis spécifiques en rapport aux schémas REST conventionnels. Il a été partagé avec la communauté mondiale en 2015 et est maintenant supervisé par un grand groupe mondial de développeurs.

Qu'est-ce que le protocole GraphQL ?

Les bases de GraphQL

GraphQL se démarque avec son indépendance vis-à-vis des bases de données ou des mécanismes de stockage. Il agit comme une strate applicative qui peut dialoguer avec n'importe quelle source de données. Par conséquent, il offre la possibilité d'unifier diverses sources de données en une seule interface API.

Avec GraphQL, vous organisez une répresentation structurée de vos données, qui expose la façon dont elles sont connectées. Cette illustration fonctionne comme un contrat entre le client et le serveur, définissant quelles interrogations peuvent être établies et quelles données peuvent être restituées.

Analyse comparée avec REST

L'atout majeur de GraphQL par rapport à REST est que ce dernier exige plusieurs interrogations vers différentes URL pour recueillir des données liées. Tandis qu'avec GraphQL, toutes les données requises peuvent être recueillies via une unique interrogation. Ceci est possible car GraphQL embarque un système de typage qui autorise les clients à définir un besoin précis en sollicitant uniquement les données primordiales.

Imaginons une application qui fournit une collection d'articles de blog avec les informations de chaque écrivain. Avec une API REST, vous devriez initialement recueillir la collection des articles, puis faire une nouvelle interrogation pour chaque écrivain. Par contre, en se servant de GraphQL, cette même information pourrait être recueillie en une unique interrogation.

Illustration de code

Voici un exemple concret de ce que pourrait être une interrogation GraphQL :


interrogation {
  blogs {
    titre
    ecrivain {
      identite
    }
  }
}

Cette interrogation retournerait une collection de blogs avec le titre de chaque blog et le nom de son auteur.

En somme, GraphQL est un langage d'interrogation robuste et adaptable qui facilite et optimise le travail des développeurs lorsqu'ils gèrent leurs données. Par rapport aux modèles REST traditionnels, il offre des avantages significatifs tels que la possibilité d'obtenir multiples ressources avec une unique interrogation et une performance renforcée due à la réduction du trafic réseau.

Comment ça marche ?

Dans le lexique technologique, GraphQL se distingue par son implication dans le processus de transmission des données requis par le client, selon la structure établie. Grâce à ce paradigme, on peut éviter les problèmes de surexploitation ou d'insuffisance des ressources. Allons un peu plus loin pour expliquer comment cela se passe:

Étapes d'envoi d'une demande de données par le client

L'initiative débute côté client, qui fait parvenir sa demande de données au serveur. Cette demande est critère par le client, qui précise son besoin en information. Par exemple, le client désire obtenir d'un utilisateur son nom et son courriel, il fera alors une demande similaire à :


{
  individu {
    patronyme
    mel
  }
}

Analyse de la demande par le serveur

Le serveur réceptionne la demande et l'analyse grâce à une structure de données connue sous le nom de schéma GraphQL. Ce schéma donne une représentation des données stockées sur le serveur, dévoile les différents types de données disponibles ainsi que leurs liens. Il guide donc l'exploitation de la demande client et établit les modalités de collecte des données demandées.

Récupération des informations

Le serveur se charge de la collecte des informations grâce à des programmes appelés "resolveurs". Chaque champ du schéma possède son propre resolveur, capable de localiser la data. Imaginons qu'il y ait un resolveur faisant le lien avec le champ "individu", il sera à même de collecter les informations de cet individu dans la base de données.

Réponse du serveur

Après avoir collecté toutes les données nécessaires, le serveur les transmet au client en envoyant sa réponse. Cette dernière a la même configuration que la demande initiale. Par exemple, pour la demande précédemment mentionnée, la réponse pourrait être :


{
  "donnees": {
    "individu": {
      "patronyme": "Pierre Durand",
      "mel": "pierre.durand@example.com"
    }
  }
}

Gestion des erreurs

Si une discordance se produit durant l'analyse de la demande, le serveur en informe par le biais d'une réponse d'erreur. Ces erreurs sont envoyées dans un tableau à part, qui n'impacte pas le reste du processus de la réponse. Par exemple, si l'accès au courriel de l'utilisateur est impossible pour le serveur, la réponse ressemblerait à :


{
  "donnees": {
    "individu": {
      "patronyme": "Pierre Durand",
      "mel": null
    }
  },
  "fautes": [
    {
      "message": "Récupération de l'adresse électronique de l'utilisateur impossible"
    }
  ]
}

Pour conclure, GraphQL assume une double responsabilité, facilitant à la fois la manière dont le client exprime son besoin en données et la transposition de cette demande par le serveur qui, grâce à l'utilisation du schéma et des résolveurs, peut structurer sa réponse.

Principales caractéristiques de GraphQL

GraphQL est une syntaxe conçue pour votre API qui, grâce à son interpréteur côté serveur, est capable d'exécuter vos demandes en se référant à un ensemble de descripteurs que vous définissez pour vos données. Il est indépendant de toute base de données spécifique ou moteur de stockage et fonctionne harmonieusement avec le code et les données que vous avez déjà en place.

1. Typologie robuste

GraphQL est remarquable pour ses typologies détaillées et robustes. Chaque demande passe par un contrôle rigoureux selon un plan établi par l'utilisateur, qui définit les différentes catégories de données disponibles et leur interconnexion. Ce processus garantit que le client obtient exactement ce qu'il souhaite, sans imprévus ni inexactitudes de format.


type Livre {
  titre: String
  auteur: Auteur
}

type Auteur {
  nom: String
  livres: [Livre]
}

2. Demandes stratifiées

Faisant preuve de flexibilité, GraphQL permet d'effectuer des requêtes stratifiées. Par conséquent, les utilisateurs peuvent obtenir des informations complexes en une seule demande, diminuant ainsi le recours à des requêtes additionnelles pour obtenir plus d'informations, comme c'est souvent le cas avec les API REST.


{
  auteur(id: 1) {
    nom
    livres {
      titre
    }
  }
}

3. Fragmentation des requêtes

Un autre aspect distinctif de GraphQL est la fragmentation des requêtes. Cela permet de concevoir des éléments de requêtes réutilisables, réduisant ainsi la redondance et facilitant la compréhension des demandes.


fragment detailsAuteur on Auteur {
  nom
  livres {
    titre
  }
}

{
  auteur(id: 1) {
    ...detailsAuteur
  }
}

4. Auto-exploration

L'auto-exploration est un outil intégré qui donne aux utilisateurs de GraphQL la possibilité de découvrir les types de données disponibles et leurs interdépendances. Cette fonctionnalité est notamment pratique pour les outils de développement et les bibliothèques client.


{
  __schema {
    types {
      name
    }
  }
}

5. Gestion des données

De plus, GraphQL propose de gérer les données à l'aide de modifications. Ces modifications peuvent servir à créer, modifier et supprimer des données.


mutation {
  ajouterLivre(titre: "Nouveau livre", auteurId: 1) {
    id
    titre
  }
}

En conclusion, GraphQL se démarque par sa polyvalence et son efficacité considérable pour les développeurs qui interagissent avec des API. Sa capacité à demander précisément ce dont vous avez besoin, à gérer les données et à s'auto-explorer en fait un assistant performant pour le développement d'applications numériques modernes.

`

 

`

Quand utiliser GraphQL ?

GraphQL est une technologie d'interface de programme d'application, puissante et modulable, qui trouve son utilité dans de nombreux contextes. Son efficacité est particulièrement marquée dans certains cas d'utilisation.

Conception sur mesure des demandes de données

L'une des fonctionnalités majeures de GraphQL est de permettre aux utilisateurs de structurer précisément leurs demandes. C'est un atout considérable dans le cadre des applications mobiles où la bande passante est restreinte. Grâce à GraphQL, vous avez la possibilité de minimiser la transmission de données inutiles en sollicitant uniquement celles qui sont essentielles.

Gestion de données de grande ampleur

Quand il s'agit de manipuler des données interconnectées de grande ampleur, GraphQL se révèle être un partenaire précieux. Prenons l'exemple d'une plateforme de média social : vous y trouvez des utilisateurs qui ont des relations, ceux-ci ont des publications, des commentaires, des likes, et bien plus. Avec GraphQL, vous avez l'opportunité d'accéder à toutes ces données en une seule demande, ce qui est impensable avec une API REST classique.

Boostez la performance de votre application

Grâce à l'expression explicite des besoins par les utilisateurs, GraphQL peut participer à l'augmentation de la performance de votre application. En limitant la circulation de données non pertinentes sur le réseau, vous réduisez le temps de chargement de l'application, ce qui optimise l'expérience de l'utilisateur.

Facilitez le développement frontend

L'intégration de GraphQL peut grandement alléger le travail de développement frontend. Les utilisateurs ayant la possibilité de définir directement leurs besoins, ils n'ont pas à se préoccuper des données superflues. En outre, grâce à GraphQL, la possibilité d'accéder à toutes les données nécessaires en une seule demande peut simplifier la logique de votre application et rendre le code plus intelligible.

Pour conclure, GraphQL est une ressource au potentiel considérable, utile dans divers cas de figure. Néanmoins, comme toute technologie, il est crucial de savoir quand et comment l'exploiter de manière optimale. En considérant les situations évoquées ci-dessus, vous serez en mesure de déterminer si GraphQL est l'outil adapté à votre projet.

Quels sont les avantages et les inconvénients de GraphQL ?

GraphQL se distingue par ses caractéristiques singulières parmi les différents protocoles de requête de données, malgré quelques potentielles insatisfactions. Jetons un regard détaillé sur les aspects positifs et négatifs relatifs à son application.

Quels sont les avantages et les inconvénients de GraphQL ?

Points forts de GraphQL

  1. Optimisation de la prise d'informations : Le protocole GraphQL offre aux utilisateurs la possibilité de préciser avec précision leurs besoins en matière de données, ce qui minimise une surcharge inutile et optimise le rendement de l'application.

  2. Progression fluide : L'un des avantages distinctifs de GraphQL est sa faculté d'intégrer de nouveaux champs et types à votre API sans perturbation des requêtes existantes. Cette caractéristique permet de conserver les anciennes versions de l'API tout en introduisant de nouvelles fonctionnalités.

  3. Typage prononcé : Autre point fort, GraphQL est fortement typé, la définition du modèle de données étant assurée par le serveur ce qui permet une détection précoce des erreurs.

  4. Porte d'accès unique : En outre, la particularité de GraphQL est que toutes les demandes de données transitent par un seul et même point d'accès, améliorant ainsi la gestion des données et facilitant la compréhension du code.

  5. Introspection : De plus, l'introspection est une fonctionnalité native de GraphQL, permettant de faire des requêtes au modèle pour avoir des informations sur les types et champs disponibles.

Limitations de GraphQL

  1. Complexité : En contrepartie, GraphQL implique une plus grande complexité et nécessite une appréhension plus approfondie des syntaxes de requêtes et des modèles de données que d'autres protocoles de requête.

  2. Performance : Même si GraphQL assure une récupération de données plus ciblée, cela peut parfois engendrer un nombre plus élevé de requêtes vers le serveur. De plus, les requêtes plus sophistiquées peuvent prendre plus de temps à s'exécuter.

  3. Sécurité : Une autre limite est que GraphQL, autorisant les clients à demander exactement ce qu'ils veulent, pourrait générer des problématiques de sécurité. Un client pourrait, par exemple, effectuer une demande qui accapare trop de ressources de serveur.

  4. Cache : La mise en cache sous GraphQL peut s'avérer plus ardue à mettre en place comparé à d'autres protocoles de requête de données.

Pour résumer, GraphQL propose des solutions optimisées pour la récupération de données, une évolution fluide de l'API, un typage puissant, un système de requêtes centralisé et l'introspection. En revanche, son application peut comporter des difficultés en termes de complexité, de performance, de sécurité et de mise en cache. Il est donc essentiel de prendre en considération ces différents aspects avant d'opter pour GraphQL.

REST et GraphQL

Dans le domaine du développement web, deux protocoles se distinguent en ce qui concerne la gestion des interfaces de programmation d’applications (API) : REST (Representational State Transfer) et GraphQL. Leur application dépend du contexte du projet, car tous deux ont leurs spécificités. Présentons les contrastes entre REST et GraphQL à travers quelques aspects cruciaux.

REST et GraphQL

Composition des demandes

Dans la configuration REST, chaque élément (tel qu'un utilisateur, un article de blog, un commentaire) dispose d'une URL unique et chaque type de tâche (récupérer, créer, modifier, supprimer) est attribué à une méthode HTTP spécifique. Par exemple, pour réclamer les données d'un utilisateur, vous enverriez une requête GET à /users/:id. Pour l'addition d'un nouvel utilisateur, vous émettriez une requête POST à /users.

Par contre, sous GraphQL, l'ensemble des demandes est canalisé vers une URL unique et la nature de l'opération est décrite dans le contenu de la demande. Pour réclamer un utilisateur, vous enverriez une requête POST à /graphql avec un contenu qui se représente comme suit:


{
  user(id: "123") {
    name
    email
  }
}

Gestion des flux de données

Un challenge courant avec REST est la surcharge et la sous-charge de données. La surcharge de données survient lorsque le serveur voit fournir plus de données que nécessaire. Par contre la sous-charge de données a lieu lorsque le serveur fournit moins de données que nécessaires.

Grâce à GraphQL, ces problèmes sont en grande partie éliminés. Vous pouvez préciser les données voulues dans votre demande, et le serveur répondra uniquement avec ces données.


{
  user(id: "123") {
    name
    email
    comments {
      text
    }
  }
}

Traitement des erreurs

La gestion des erreurs avec REST peut être complexe car chaque type d'erreur a habituellement son propre code d'état HTTP et vous devez souvent lire la réponse pour comprendre l'erreur.

En revanche, avec GraphQL, toutes les réponses ont un statut HTTP 200 et les erreurs sont renvoyées dans une section d'erreur dans le contenu de la réponse.


{
  "errors": [
    {
      "message": "User not found",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "user"
      ]
    }
  ]
}

Dernières réflexions

La décision entre REST et GraphQL dépend des nécessités particulières de votre projet. REST pourrait être plus approprié pour une API simple à implémenter et à utiliser. Tandis que GraphQL se révèle plus commode pour une API adaptable et robuste capable de traiter des demandes sophistiquées et éviter les problématiques de flux de données.

Exemple GraphQL

Afin de démontrer le fonctionnement de GraphQL, nous allons élaborer un cas pratique. Imaginez que nous disposons d'une plateforme dédiée à la gestion des ouvrages et des écrivains. Notre objectif serait de récupérer des données concernant un livre en particulier, ainsi que des informations sur son écrivain, le tout via une demande simple.

Configuration du plan

Initialement, nous devons organiser nos données en configurant notre schéma GraphQL. Celui-ci sert de modèle à notre API pour structurer les données. Voici une idée de notre schéma :


type Bouquin {
  code: ID!
  nom: String!
  rédacteur: Rédacteur!
}

type Rédacteur {
  code: ID!
  nomComplet: String!
  bouquins: [Bouquin!]!
}

type Query {
  bouquin(code: ID!): Bouquin
  rédacteur(code: ID!): Rédacteur
}

Dans ce cas, nous avons deux catégories principales : Bouquin et Rédacteur. Chaque bouquin possède un code, un nom et un rédacteur. Chaque rédacteur détient un code, un nomComplet et une compilation de bouquins.

Construction de la demande

Maintenant que notre schéma est en place, nous avons la possibilité de construire notre demande. Imaginons que nous souhaitons recueillir des informations sur un bouquin précis ainsi que sur son rédacteur. Voici l'aspect que pourrait prendre notre demande:


query {
  bouquin(code: 1) {
    nom
    rédacteur {
      nomComplet
    }
  }
}

Cette demande spécifie que nous souhaitons le nom du bouquin avec le code 1 et le nomComplet de son rédacteur. Vous remarquerez qu'il est possible de définir précisément les éléments que nous cherchons à obtenir dans notre réponse.

Réponse à la demande

Lorsque nous transmettons cette demande à notre serveur GraphQL, nous obtenons une réponse qui fait écho à notre demande. Voici quel aspect pourrait avoir notre réponse :


{
  "data": {
    "bouquin": {
      "nom": "Le Petit Prince",
      "rédacteur": {
        "nomComplet": "Antoine de Saint-Exupéry"
      }
    }
  }
}

Comme vous pouvez le constater, GraphQL nous donne la possibilité de recueillir précisément les éléments dont nous avons besoin, le tout au travers d'une demande unique, rendant ainsi nos plateformes plus performantes et plus aisées à gérer.

Conclusion

Ce cas pratique démontre l'efficience et l'adaptabilité de GraphQL. Evidemment, dans une application concrète, notre schéma serait beaucoup plus élaboré et il nous faudrait traiter de nombreuses demandes et mutations. Toutefois, les fondements restent les mêmes : configuration de notre schéma, construction de nos demandes et mutations, et acquisition de réponses exactes et performantes.

Conclusion

Pour conclure, GraphQL est un protocole d'interrogation de données robuste et adaptable qui présente plusieurs bénéfices par rapport à des méthodes plus conventionnelles comme REST. Le protocole favorise une extraction de données optimale, une haute performance et offre une grande souplesse aux développeurs.

Les points positifs de GraphQL

GraphQL se distingue par son habileté à extraire plusieurs ressources en une requête unique. Ceci représente un gain de temps et d'énergie en éliminant les multiples appels de réseau associés à REST. Dans le même temps, GraphQL autorise les applications clientes à préciser précisément les informations dont elles ont besoin, ce qui contribue à limiter le volume de données véhiculées par le réseau et optimise la performance.

Les contraintes de GraphQL

Malgré ses atouts, GraphQL a également des points faibles. Par exemple, son implémentation peut s'avérer plus ardue que celle de REST, notamment pour de vastes équipes de développement. De plus, bien que GraphQL promeuve une extraction de données optimale, sa sécurisation et son passage à échelle peuvent s'avérer plus délicats que pour REST.

Duel entre GraphQL et REST

En mettant en balance les protocoles GraphQL et REST, chaque méthode se révèle avoir ses atouts et ses lacunes. REST est aisé et pratique à utiliser, néanmoins il peut manquer d'efficacité pour l'interrogation de données complexes. De son côté, GraphQL se caractérise par sa souplesse et sa capacité optimale, mais son implémentation et sa sécurisation peuvent être plus problématiques.

Exercice pratique avec GraphQL

Pour illustrer concrètement l'utilisation de GraphQL, prenons un exemple simple. Imaginons que nous souhaitons extraire les informations d'un utilisateur et tous ses messages depuis une API. En utilisant REST, nous aurions à effectuer multiples appels de réseau pour obtenir ces informations. Par contre, avec GraphQL, nous pouvons recueillir l'ensemble de ces données en une seule requête.


query {
  user(id: 1) {
    name
    posts {
      title
      content
    }
  }
}

Cette interrogation renvoie les informations de l'utilisateur et tous ses messages en un seul coup, un rendement largement supérieur à de multiples appels de réseau avec REST.

In fine, choisir entre REST et GraphQL se fera en fonction des exigences précises de votre projet. Si vous requérez une extraction de données performante et adaptable, GraphQL pourrait être le choix optimal. Toutefois, si vous favorisez un régime plus simple et plus facile à implémenter, REST pourrait être l'option idéale.

En résumé, GraphQL est un instrument robuste qui peut optimiser l'efficacité et la souplesse de vos applications. Cependant, à l'instar de tout instrument, sa manipulation doit être faite avec discernement et en tenant compte de ses bénéfices et contraintes.

`

 

`

FAQ

Dans cet article, nous éclaircissons divers aspects du protocole GraphQL en répondant aux interrogations les plus courantes.

Définition du protocole GraphQL

Le protocole GraphQL est une langue de programmation destinée aux interfaces de programmation d’applications (API), ainsi qu'un environnement d'exécution pour ces mêmes requêtes à l'aide des données existantes. Comparé aux API REST, il propose une méthode plus performante, dynamique et adaptable.

Mécanismes de GraphQL

Avec GraphQL, les utilisateurs ont la capacité de préciser la configuration des réponses qu'ils anticipent. Cela permet de contourner les retours incessants pour la récupération de données nécessaire, un problème récurrent avec les API REST.

Les spécificités de GraphQL

GraphQL se distingue par une syntaxe de requête d’interrogation simple à comprendre, l'accès à des données précises, un typage robuste et la capacité de concevoir des demandes complexes et emboîtées.

Les circonstances d'utilisation de GraphQL

Le protocole GraphQL est spécifiquement profitable lors de la manipulation des applications web ou mobile nécessitant des données modulables et précises. Il est également bénéfique pour le traitement des informations en temps réel.

Les points forts et points faibles de GraphQL

GraphQL met en avant une meilleure performance des requêtes, une excellente expérience utilisateur et une flexibilité supérieure. Toutefois, il présente aussi des points faibles comme une pente d'apprentissage plus abrupte et une complexité plus élevée.

REST vs GraphQL: L'écart entre les deux

Contrairement à REST, qui repose sur des principes normalisés et qui emploie des méthodes HTTP pour l'extraction, la création, la modification et la suppression des données, GraphQL donne aux utilisateurs la possibilité de préciser avec exactitude les données requises, ce qui peut limiter le volume de données échangées.

Un exemple de l'usage de GraphQL

Considérez cet exemple de requête GraphQL simple:


{
  utilisateurr(id: 1) {
    nom
    courriel
  }
}

Cette demande retournera le nom et le courriel de l'utilisateur possédant l'ID 1.

En conclusion

Malgré une courbe d'apprentissage abrupte et une complexité certaine, le protocole GraphQL est un instrument de choix pour les développeurs en raison de sa flexibilité et de l'efficacité qu'il offre. Avant tout usage, il est crucial de comprendre son mode de fonctionnement.

Références

Références

Pour améliorer votre expertise de GraphQL, voici une sélection de sources d'information précieuse:

  1. Page Web officielle de GraphQL : https://graphql.org/
    Cet espace en ligne est fondamental pour appréhender les fondamentaux de GraphQL, son panel de fonctionnalités et sa mécanique. Vous y trouverez des tutoriels instructifs et une documentation exhaustive.

  2. "L’Apprentissage de GraphQL" par Eve Porcello et Alex Banks : https://www.oreilly.com/library/view/learning-graphql/9781492030713/
    Ce guide est un point de départ parfait pour les novices de GraphQL. Il aborde les éléments de base de GraphQL, tels que la formation de schémas et de requêtes, et la fusion de GraphQL avec React.

  3. "GraphQL: Le Nouveau REST" par Samer Buna : https://www.pluralsight.com/courses/graphql-the-big-picture
    Cette session de formation en ligne donne une vue d'ensemble de GraphQL et détaille comment il se juxtapose à REST. Il est parfait pour ceux qui ont une connaissance préalable de REST et veulent explorer les bénéfices de GraphQL.

  4. "GraphQL en Action" par Samer Buna : https://www.manning.com/books/graphql-in-action
    Ce manuel explore en détail les idées de GraphQL et explique de quelle manière l'implémenter dans des projets concrets. Il traite d'aspects tels que l'authentification, la résolution d'erreurs et l'amélioration des performances.

  5. "GraphQL Avancé" par Scott Moss : https://frontendmasters.com/courses/advanced-graphql/
    Ce tutoriel en ligne s'adresse à ceux qui ont une connaissance préalable de GraphQL et souhaitent approfondir leur compréhension. Il explore des aspects tels que la création de types personnalisés, l'utilisation de directives et la résolution d'erreurs.

  6. "Apollo GraphQL" : https://www.apollographql.com/
    Apollo est une plate-forme de renom pour développer des applications avec GraphQL. Leur site web offre une documentation détaillée, des tutoriels et une communauté active.

  7. "Prisma" : https://www.prisma.io/
    Prisma est un outil visant à simplifier le développement d'applications avec GraphQL. Il introduit une couche d'abstraction pour interagir avec les bases de données et facilite l'élaboration de schémas GraphQL.

  8. "Hebdo GraphQL" : https://graphqlweekly.com/
    Hebdo GraphQL est une lettred’information offrant des articles, des tutoriels et des actualités sur GraphQL.

  9. "Incroyable GraphQL" : https://github.com/chentsulin/awesome-graphql
    Incroyable GraphQL est une compilation de ressources sur GitHub qui comprend des outils, des bibliothèques et des didacticiels sur GraphQL.

  10. "Fondation GraphQL" : https://foundation.graphql.org/
    La Fondation GraphQL est une organisation sans but lucratif qui promeut l'écosystème GraphQL. Elle offre des moyens d'apprendre et de participer à GraphQL.

Le recours à ces sources devrait vous permettre d'affiner vos compétences en GraphQL et de comprendre comment l'utiliser de manière efficiente dans vos projets.

See Wallarm in action
“Wallarm really protects our service and provides good visibility and user-friendly control.”