SlideShare a Scribd company logo
1 of 30
Download to read offline
Digital Service Design
by Capgemini
Dites adieu à REST, et bonjour à GraphQL.
La relève est arrivée.
Développeur Web chez
Backelite
Andy Gigon
Conférencier Paris WEB
2017 sur graphQL
Merci pour sa conférence
Paris Web 2017
Aurélien David
L’application de démonstration
5
L’application de démonstration
Studio Ghibli,
application React Native
Premier écran pour lister les films
6
L’application de démonstration
Deuxième écran pour le détail d’un film
Studio Ghibli,
application React Native
7
L’application de démonstration
L’api REST
La première version utilisait une API REST disponible
sur le service heroku.com.
https://ghibliapi.herokuapp.com
8
L’application de démonstration
Information nécessaire
pour le 1er écran
Liste des 10 premiers films.
Pour chaque film, le titre, le score, et la date de sortie
9
L’application de démonstration
Détails pour un seul film, l’URL de l’image, le titre, la
description, la date de sortie, le producteur, le
directeur, et la note
La version 2 ajoute la liste des personnages avec leurs
noms et leurs espèces
Information nécessaire
pour le 2éme écran
10
Le transport de l’information
11
Transport de l’information
L’encapsulation
12
Transport de l’information
Requête pour récupérer
un film
• Taille totale de la requête 2055 octets
• Taille du payload 1684 octets
18% de la taille totale utilisée
pour le transport
13
Transport de l’information
TCP Tree-way handshake
TCP Tree-way handshake 3 échanges pour la
création de la communication
14
Transport de l’information
La perte de paquet et
le débit réduit
Génération Technologie Débit minimum et
maximum*
Débit moyen
2G GSM 9.6 kbit/s 9.6 kbit/s
2,5G GPRS Entre 20 et 175 kbit/s 48 kbit/s
2,75G EDGE Entre 40 et 350 kbit/s 171 kbit/s
3G UMTS Entre 144 kbit/s et 2 Mbit/s 384 kbit/s
3G+ HSDPA Entre 300 kbit/s et 14 Mbit/s 750 kbit/s
H+ HSPA+ Entre 2 Méga et 42 Mbit/s 4 Mbit/s
4G LTE-Advanced Entre 7 Méga et 150 Mbit/s 9,4 Mbit/s
15
Comparaison entre REST et GraphQL
16
Comparaison entre REST et GraphQL
Deux exemples d’api
REST
1
Basic
2
Complexe avec pagination et
populate (type sails.js)
• /films => retourne tous les films avec tous les
champs
• /film/ID => retourne un film avec tous les champs
• /films?limit=10&Skip= 10 retourne les films paginés
avec tous les champs
• /film/ID?populate=[people] retourne un film avec
tous les champs et les peoples associés avec tous
les champs
17
Comparaison entre REST et GraphQL
Premier écran liste des
films
Nécessite les 10 premiers films avec les propriétés ID,
titre, image, année et score.
Type API Nombre de requête Total transit Total payload
REST basic 1 15,6 Ko 19,50 Ko
REST complexe 1 7,65 Ko 9,6 Ko
Payload utile	3,51	Ko
18
Comparaison entre REST et GraphQL
Deuxième écran, détails
d’un film
Nécessite les propriétés du film: images, titre, description,
année, producteur, directeur, score et la liste des 3 premiers
personnages avec leurs noms et espèce
Type API Nombre de requête Total transit Total payload
REST basic 7 5,89 Ko 3,35 Ko
REST complexe 4 4,06 Ko 2,61 Ko
Payload utile	899	o
19
Comparaison entre REST et GraphQL
Les API REST ne sont
pas économes
• L’API REST va nous transmettre énormément de
données inutiles
• Beaucoup de requêtes (latence et encapsulation)
20
Et si on optimise tout ca.
Une requête par écran avec juste la quantité
d’information nécessaire.
21
Comparaison entre REST et GraphQL
C’est possible avec
GraphQL
Ecran liste Ecran détail
Type API Nombre de
requête
Total transit Total payload
REST basic 1 15,6 Ko 19,50 Ko
REST
complexe
1 7,65 Ko 9,6 Ko
GraphQL 1 3,7 Ko 3,51 Ko
Payload utile	3,51	Ko Payload utile	899	o
Type API Nombre de
requête
Total transit Total payload
REST basic 7 5,89 Ko 3,35 Ko
REST
complexe
4 4,06 Ko 2,61 Ko
GraphQL 1 1,24 Ko 899 o
22
GraphQL
23
GraphQL
Les principes
Maintenabilité
Pas de suppression, uniquement de
l’ajout.
Développement
Système d’ auto complétion
disponible pour la création de
requête.
C’est quoi?
GraphQL est une syntaxe qui décrit
comment demander des données au
niveau de la couche transport
Facile
Un seul endpoint à connaitre.
Intérêt
GraphQL donne aux clients le pouvoir
de demander exactement ce dont ils
ont besoin et rien de plus.
24
GraphQL
La	suite	ici:	http://graphql.org/users/
25
GraphQL
Démonstration avec GraphiQL
26
GraphQL
Query (Lecture)
Permets de récupérer les données correspondant au
schéma demandé
27
GraphQL
Les arguments
Les QUERY supportent les arguments pour par
exemple gérer de la pagination, recherche, des
filtres ou du tri.
28
GraphQL
Mutation (Ecriture)
Permet la modification, la suppression ou la création
des données
Chaque input possède sont propre input pour
décrire le schéma de données attendu
La documentation est disponible sur graphiql
29
GraphQL
Subscription (Temps réel)
Le client s'inscrit à des évènements spécifiques, puis
reçoit les données demandées en temps réel,
généralement implémentées en websockets.
30
Questions
Questions

More Related Content

Similar to Graph QL par Andy Gigon

Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)Restlet
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletJerome Louvel
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonySébastien Rosset
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 
Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...Capgemini
 
LoadTime & SEO - Erlé Alberton
LoadTime & SEO - Erlé AlbertonLoadTime & SEO - Erlé Alberton
LoadTime & SEO - Erlé AlbertonWeLoveSEO
 
We❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEOWe❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEOErlé Alberton
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020SEO CAMP
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Steven VAN POECK
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOWeLoveSEO
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...
XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...
XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...Publicis Sapient Engineering
 

Similar to Graph QL par Andy Gigon (20)

Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec Symfony
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.net
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
LoadTime & SEO - Erlé Alberton
LoadTime & SEO - Erlé AlbertonLoadTime & SEO - Erlé Alberton
LoadTime & SEO - Erlé Alberton
 
We❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEOWe❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEO
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?
 
vNext
vNextvNext
vNext
 
Introduction aux APIs IIIF
Introduction aux APIs IIIFIntroduction aux APIs IIIF
Introduction aux APIs IIIF
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...
XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...
XebiCon'16 : GraphQL et Falcor, un nouveau regard sur les architectures REST ...
 
Le futur de gwt
Le futur de gwtLe futur de gwt
Le futur de gwt
 

More from Idean France

Start with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineStart with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineIdean France
 
Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Idean France
 
Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsIdean France
 
La recette graphique
La recette graphiqueLa recette graphique
La recette graphiqueIdean France
 
Cocoheads react native + redux par Nicolas Fontaine
Cocoheads   react native + redux par Nicolas FontaineCocoheads   react native + redux par Nicolas Fontaine
Cocoheads react native + redux par Nicolas FontaineIdean France
 
Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Idean France
 
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Idean France
 
From Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre HarléFrom Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre HarléIdean France
 
RX Swift avril 2017 - David Yang
RX Swift avril 2017 - David YangRX Swift avril 2017 - David Yang
RX Swift avril 2017 - David YangIdean France
 
UI Design Trends for 2017
UI Design Trends for 2017UI Design Trends for 2017
UI Design Trends for 2017Idean France
 
Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017Idean France
 
Rendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas FontaineRendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas FontaineIdean France
 
Sirikit par Julien Coudsi
Sirikit par Julien CoudsiSirikit par Julien Coudsi
Sirikit par Julien CoudsiIdean France
 
A developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey HacqA developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey HacqIdean France
 
CocoaPods par David Yang
CocoaPods par David YangCocoaPods par David Yang
CocoaPods par David YangIdean France
 
Messages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineIdean France
 
Un développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey HacqUn développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey HacqIdean France
 
CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}Idean France
 
Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}Idean France
 
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}Idean France
 

More from Idean France (20)

Start with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineStart with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a Machine
 
Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !
 
Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outils
 
La recette graphique
La recette graphiqueLa recette graphique
La recette graphique
 
Cocoheads react native + redux par Nicolas Fontaine
Cocoheads   react native + redux par Nicolas FontaineCocoheads   react native + redux par Nicolas Fontaine
Cocoheads react native + redux par Nicolas Fontaine
 
Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017
 
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
 
From Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre HarléFrom Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre Harlé
 
RX Swift avril 2017 - David Yang
RX Swift avril 2017 - David YangRX Swift avril 2017 - David Yang
RX Swift avril 2017 - David Yang
 
UI Design Trends for 2017
UI Design Trends for 2017UI Design Trends for 2017
UI Design Trends for 2017
 
Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017
 
Rendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas FontaineRendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas Fontaine
 
Sirikit par Julien Coudsi
Sirikit par Julien CoudsiSirikit par Julien Coudsi
Sirikit par Julien Coudsi
 
A developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey HacqA developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey Hacq
 
CocoaPods par David Yang
CocoaPods par David YangCocoaPods par David Yang
CocoaPods par David Yang
 
Messages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas Fontaine
 
Un développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey HacqUn développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey Hacq
 
CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}
 
Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}
 
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
 

Graph QL par Andy Gigon

  • 2. Dites adieu à REST, et bonjour à GraphQL. La relève est arrivée.
  • 3. Développeur Web chez Backelite Andy Gigon Conférencier Paris WEB 2017 sur graphQL Merci pour sa conférence Paris Web 2017 Aurélien David
  • 5. 5 L’application de démonstration Studio Ghibli, application React Native Premier écran pour lister les films
  • 6. 6 L’application de démonstration Deuxième écran pour le détail d’un film Studio Ghibli, application React Native
  • 7. 7 L’application de démonstration L’api REST La première version utilisait une API REST disponible sur le service heroku.com. https://ghibliapi.herokuapp.com
  • 8. 8 L’application de démonstration Information nécessaire pour le 1er écran Liste des 10 premiers films. Pour chaque film, le titre, le score, et la date de sortie
  • 9. 9 L’application de démonstration Détails pour un seul film, l’URL de l’image, le titre, la description, la date de sortie, le producteur, le directeur, et la note La version 2 ajoute la liste des personnages avec leurs noms et leurs espèces Information nécessaire pour le 2éme écran
  • 10. 10 Le transport de l’information
  • 12. 12 Transport de l’information Requête pour récupérer un film • Taille totale de la requête 2055 octets • Taille du payload 1684 octets 18% de la taille totale utilisée pour le transport
  • 13. 13 Transport de l’information TCP Tree-way handshake TCP Tree-way handshake 3 échanges pour la création de la communication
  • 14. 14 Transport de l’information La perte de paquet et le débit réduit Génération Technologie Débit minimum et maximum* Débit moyen 2G GSM 9.6 kbit/s 9.6 kbit/s 2,5G GPRS Entre 20 et 175 kbit/s 48 kbit/s 2,75G EDGE Entre 40 et 350 kbit/s 171 kbit/s 3G UMTS Entre 144 kbit/s et 2 Mbit/s 384 kbit/s 3G+ HSDPA Entre 300 kbit/s et 14 Mbit/s 750 kbit/s H+ HSPA+ Entre 2 Méga et 42 Mbit/s 4 Mbit/s 4G LTE-Advanced Entre 7 Méga et 150 Mbit/s 9,4 Mbit/s
  • 16. 16 Comparaison entre REST et GraphQL Deux exemples d’api REST 1 Basic 2 Complexe avec pagination et populate (type sails.js) • /films => retourne tous les films avec tous les champs • /film/ID => retourne un film avec tous les champs • /films?limit=10&Skip= 10 retourne les films paginés avec tous les champs • /film/ID?populate=[people] retourne un film avec tous les champs et les peoples associés avec tous les champs
  • 17. 17 Comparaison entre REST et GraphQL Premier écran liste des films Nécessite les 10 premiers films avec les propriétés ID, titre, image, année et score. Type API Nombre de requête Total transit Total payload REST basic 1 15,6 Ko 19,50 Ko REST complexe 1 7,65 Ko 9,6 Ko Payload utile 3,51 Ko
  • 18. 18 Comparaison entre REST et GraphQL Deuxième écran, détails d’un film Nécessite les propriétés du film: images, titre, description, année, producteur, directeur, score et la liste des 3 premiers personnages avec leurs noms et espèce Type API Nombre de requête Total transit Total payload REST basic 7 5,89 Ko 3,35 Ko REST complexe 4 4,06 Ko 2,61 Ko Payload utile 899 o
  • 19. 19 Comparaison entre REST et GraphQL Les API REST ne sont pas économes • L’API REST va nous transmettre énormément de données inutiles • Beaucoup de requêtes (latence et encapsulation)
  • 20. 20 Et si on optimise tout ca. Une requête par écran avec juste la quantité d’information nécessaire.
  • 21. 21 Comparaison entre REST et GraphQL C’est possible avec GraphQL Ecran liste Ecran détail Type API Nombre de requête Total transit Total payload REST basic 1 15,6 Ko 19,50 Ko REST complexe 1 7,65 Ko 9,6 Ko GraphQL 1 3,7 Ko 3,51 Ko Payload utile 3,51 Ko Payload utile 899 o Type API Nombre de requête Total transit Total payload REST basic 7 5,89 Ko 3,35 Ko REST complexe 4 4,06 Ko 2,61 Ko GraphQL 1 1,24 Ko 899 o
  • 23. 23 GraphQL Les principes Maintenabilité Pas de suppression, uniquement de l’ajout. Développement Système d’ auto complétion disponible pour la création de requête. C’est quoi? GraphQL est une syntaxe qui décrit comment demander des données au niveau de la couche transport Facile Un seul endpoint à connaitre. Intérêt GraphQL donne aux clients le pouvoir de demander exactement ce dont ils ont besoin et rien de plus.
  • 26. 26 GraphQL Query (Lecture) Permets de récupérer les données correspondant au schéma demandé
  • 27. 27 GraphQL Les arguments Les QUERY supportent les arguments pour par exemple gérer de la pagination, recherche, des filtres ou du tri.
  • 28. 28 GraphQL Mutation (Ecriture) Permet la modification, la suppression ou la création des données Chaque input possède sont propre input pour décrire le schéma de données attendu La documentation est disponible sur graphiql
  • 29. 29 GraphQL Subscription (Temps réel) Le client s'inscrit à des évènements spécifiques, puis reçoit les données demandées en temps réel, généralement implémentées en websockets.