GraphQL
API
Mobile
Backend
Frontend
Performance

GraphQL pour les applications : guide de mise en œuvre

GraphQL pour les applications : guide de mise en œuvre

GraphQL a révolutionné la façon dont les applications consomment les API. Au lieu de points de terminaison fixes, le client demande exactement les données dont il a besoin. Ce guide présente GraphQL, la comparaison avec REST et comment l'implémenter dans les applications mobiles.

Qu'est-ce que GraphQL

Définition

Langage de requête pour les API développés par Facebook.

###Concept

Le client définit la structure de réponse, pas le serveur.

Schéma

Contrat tapé qui définit les données disponibles.

GraphQL contre REST

Surcharge

REST renvoie des données fixes. GraphQL renvoie uniquement l'ordre.

Sous-récupération

REST peut nécessiter plusieurs appels. GraphQL dans une requête.

Flexibilité

Le client contrôle ce qu’il reçoit.

Gestion des versions

GraphQL fait évoluer le schéma sans versions d'API.

Concepts fondamentaux

Requête

Récupérer des données. Opérations de lecture.

###Mutations

Modifier les données. Opérations d'écriture.

Abonnement

Données en temps réel via WebSocket.

Schéma

Définition des types et des opérations.

Résoudre

Fonction qui récupère les données pour chaque champ.

Avantages pour les mobiles

Économie des données

Moins d'octets transférés.

Moins de latence

Un appel contre plusieurs.

Hors ligne d'abord

Le cache le plus intelligent possible.

Saisie

Schéma comme contrat. Génération de codes.

Implémentation du back-end

Serveurs GraphQL

Serveur Apollo, GraphQL Yoga, Hasura.

Conception de schéma

Domaine modèle, pas base de données.

Résolveurs

Récupérez des données à partir de n’importe quelle source.

###Chargeur de données

Traitement par lots pour éviter les requêtes n+1.

## Clients mobiles

###ApolloClient

iOS, Android, React Native. Riche en fonctionnalités.

Relais

Facebook. Opinioné, optimisé.

Requête GraphQL

Prends-le. Pour les cas simples.

Génération de code

Types générés à partir du schéma. Tapez la sécurité.

Langage de requête

Champs

Précisez exactement ce que vous voulez.

Arguments

Filtrez et personnalisez.

Alias

Renommez les champs dans la réponse.

Fragments

Réutilisez les sélections.

###Variables

Paramètres dynamiques.

##Mutations

Syntaxe

Similaire à une requête, mais à modifier.

Types d'entrée

Objets complexes comme paramètre.

Réponse

Renvoie les données mises à jour.

Mise à jour optimiste

Mises à jour de l'interface utilisateur avant la réponse.

Abonnements

Cas d'utilisation

Chat, notifications, flux en temps réel.

Transports

WebSocket, SSE.

Mise en cache

Met automatiquement à jour le cache.

Mise en cache

Cache normalisé

Entités stockées par ID.

Récupérer les politiques

cache d'abord, réseau uniquement, cache et réseau.

Invalidation

Mettre à jour le cache après les mutations.

Persistance

Cache persistant pour hors ligne.

##Performances

Complexité des requêtes

Limitez la profondeur et la complexité.

Pagination

Basé sur le curseur pour les grandes listes.

Requêtes persistantes

Hachage au lieu d'une chaîne complète.

CDN

Mise en cache Edge pour les requêtes publiques.

Sécurité

Authentification

Jeton dans l'en-tête.

Autorisation

Validez les autorisations sur les résolveurs.

Limitation du débit

Par opération, pas par point final.

Profondeur de la requête

Limitez la profondeur pour éviter les abus.

Gestion des erreurs

Succès partiel

GraphQL peut renvoyer des données et des erreurs.

Types d'erreurs

Personnalisez par type d'erreur.

Gestion des clients

Gérez les erreurs avec élégance.

Outillage

###GraphiQL/Aire de jeux

Interface pour explorer le schéma.

Générateurs de codes

graphql-codegen. Types automatiques.

Apollon Studio

Surveillance, registre de schémas.

### Peluchage

eslint-plugin-graphql.

##Migration REST

Progressive

Ajoutez GraphQL à côté de REST.

Fédération

Services multiples GraphQL unis.

Emballage

GraphQL devant le REST existant.

## meilleures pratiques

Schéma d'abord

Définir le schéma avant l'implémentation.

Nommer

Des conventions claires. Types PascalCase, champs camelCase.

###Documentations

Descriptions dans le schéma.

Dépréciation

Marquez les champs obsolètes.

Quand utiliser GraphQL

Bon pour

  • Applications mobiles avec des données complexes
  • Plusieurs clients différents
  • Itération rapide du produit

Pas idéal pour

  • API simples
  • Téléchargement de fichiers lourds
  • Temps réel intensif (pensez à gRPC)

Conclusion

GraphQL est puissant pour les applications mobiles qui ont besoin d'efficacité et de flexibilité. Apprenez les concepts, choisissez la pile appropriée et mettez-la en œuvre avec discipline. Le résultat est des applications plus rapides et un développement plus productif.

##FAQ

1) GraphQL remplace REST ? Pas nécessairement. Chacun a des cas d’utilisation. Ils peuvent coexister.

2) GraphQL est-il plus lent que REST ? Pas intrinsèquement. Cela dépend de la mise en œuvre.

3) Dois-je réécrire le backend ? Non. GraphQL peut envelopper les services existants.

4) Spécifique aux mobiles ou est-ce que ça marche pour le Web ? Fonctionne pour n’importe quel client. Le mobile en profite beaucoup.

5) Apollo est-il obligatoire ? Non, c’est populaire mais il existe des alternatives.

A lire aussi