SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Geek Time- Juin 2017
Atef ZAAFOURI
Consultant - OLBATI
OLBATI - Geek Time - Juin 2017 2
Plan
● Introduction
● Historique
● Limites de REST
● Les Concepts de Base
● Demo
● Relay, Apollo...
● Questions?
OLBATI - Geek Time - Juin 2017 3
Introduction
● Définit un langage permettant de requêter et
récupérer de manière déclarative des données depuis
un back-end
● On décrit nos types de données sous forme d’un
Graphe
● On définit nos Requêtes sur le client
● Implémentée en plusieurs langages de
programmation
OLBATI - Geek Time - Juin 2017 4
Introduction
OLBATI - Geek Time - Juin 2017 5
Historique
● Créé par Facebook
● Remplacer tous les services REST nécessaires aux
applications mobile
● En production depuis 2012 pour les applications iOS
et Android de Facebook
OLBATI - Geek Time - Juin 2017 6
Limites de REST
● REST est tout ou rien. Si vous requêtez un objet vous aurez spontanément
tous les champs de l'objet ou rien
● REST oblige souvent à enchaîner plusieurs appels pour obtenir les données
souhaitées
● REST n'est pas fait pour gérer facilement les relations entre objets,
● REST est statique, vous obtenez la réponse que le développeur de
l'application a décidé de définir
● REST impose des échanges entre développeurs afin que les API REST
implémentées puissent convenir à tous les projets
● REST n'est d'aucune aide pour vous garantir le type des données échangées
OLBATI - Geek Time - Juin 2017 7
Limites de REST
OLBATI - Geek Time - Juin 2017 8
Les Concepts de Base
● Hiérarchique
● Requêtes spécifiques au client
● Typage fort
● Rétrocompatibilité
● Introspectif
● Indépendant du transport
OLBATI - Geek Time - Juin 2017 9
Les types
● Des Scalar : Boolean, String, Int, Float, etc..
● Des « Object Types»
● Des interfaces, enum, List, non-null type etc…
OLBATI - Geek Time - Juin 2017 10
Typage fort
OLBATI - Geek Time - Juin 2017 11
Mutation
OLBATI - Geek Time - Juin 2017 12
Mutation
OLBATI - Geek Time - Juin 2017 13
Fragments
OLBATI - Geek Time - Juin 2017 14
Documentation
OLBATI - Geek Time - Juin 2017 15
DEMO
OLBATI - Geek Time - Juin 2017 16
Relay
● Créer pour GraphQL
● Permet à chaque composant de définir les données
dont il a besoin
● Au coeur de la plupart des applications Facebook
OLBATI - Geek Time - Juin 2017 17
Relay
OLBATI - Geek Time - Juin 2017 18
Thanks!
Any questions?
@azaafouri
atef.zaafouri@olbati.com

Weitere ähnliche Inhalte

Was ist angesagt?

MWCP 2018 - Un framework pour les gouverner tous
MWCP 2018 -  Un framework pour les gouverner tousMWCP 2018 -  Un framework pour les gouverner tous
MWCP 2018 - Un framework pour les gouverner tousGaetan Bouveret
 
Geek Time Janvier 2017 : Java 8
Geek Time Janvier 2017 : Java 8Geek Time Janvier 2017 : Java 8
Geek Time Janvier 2017 : Java 8OLBATI
 
Introduction à la journée Sécurité, Sureté et Confidentialité
Introduction à la journée Sécurité, Sureté et ConfidentialitéIntroduction à la journée Sécurité, Sureté et Confidentialité
Introduction à la journée Sécurité, Sureté et ConfidentialitéPôle Systematic Paris-Region
 
DMCA #20: Migration Natif vers react natif
DMCA #20: Migration Natif vers react natifDMCA #20: Migration Natif vers react natif
DMCA #20: Migration Natif vers react natifOlivier Destrebecq
 
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018Cedric Girard
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Publicis Sapient Engineering
 
React Native - Développez vos application native en JS
React Native - Développez vos application native en JSReact Native - Développez vos application native en JS
React Native - Développez vos application native en JSYann Duval
 

Was ist angesagt? (8)

MWCP 2018 - Un framework pour les gouverner tous
MWCP 2018 -  Un framework pour les gouverner tousMWCP 2018 -  Un framework pour les gouverner tous
MWCP 2018 - Un framework pour les gouverner tous
 
Geek Time Janvier 2017 : Java 8
Geek Time Janvier 2017 : Java 8Geek Time Janvier 2017 : Java 8
Geek Time Janvier 2017 : Java 8
 
Introduction à la journée Sécurité, Sureté et Confidentialité
Introduction à la journée Sécurité, Sureté et ConfidentialitéIntroduction à la journée Sécurité, Sureté et Confidentialité
Introduction à la journée Sécurité, Sureté et Confidentialité
 
DMCA #20: Migration Natif vers react natif
DMCA #20: Migration Natif vers react natifDMCA #20: Migration Natif vers react natif
DMCA #20: Migration Natif vers react natif
 
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
 
Mohamed.marouan
Mohamed.marouanMohamed.marouan
Mohamed.marouan
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
 
React Native - Développez vos application native en JS
React Native - Développez vos application native en JSReact Native - Développez vos application native en JS
React Native - Développez vos application native en JS
 

Ähnlich wie Geek Time Juin 2017 : GraphQL

1er atelier technique - IGO2 - 17 mai 2017
1er atelier technique - IGO2 - 17 mai 20171er atelier technique - IGO2 - 17 mai 2017
1er atelier technique - IGO2 - 17 mai 2017igouverte
 
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
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Sébastien Le Marchand
 
Presentation Drupal 8 au DrupalCamp Paris 2013
Presentation Drupal 8 au DrupalCamp Paris 2013Presentation Drupal 8 au DrupalCamp Paris 2013
Presentation Drupal 8 au DrupalCamp Paris 2013Chipway
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec OdooHassan WAHSISS
 
Les Web APIs en .NET Core
Les Web APIs en .NET CoreLes Web APIs en .NET Core
Les Web APIs en .NET CoreFrançois Camus
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !
Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !
Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !Anthony Faucogney
 
Êtes-vous API dans votre organisation ?
Êtes-vous API dans votre organisation ?Êtes-vous API dans votre organisation ?
Êtes-vous API dans votre organisation ?OCTO Technology Suisse
 
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien PauletSPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien PauletaOS Community
 
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS DakarLow code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS DakarSébastien Paulet
 
aOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content Services
aOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content ServicesaOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content Services
aOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content ServicesSébastien Paulet
 
Php forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du MondePhp forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du Mondemarchugon
 
Prez multicycles api_gbfs_meetup_open_transport_200219
Prez multicycles api_gbfs_meetup_open_transport_200219Prez multicycles api_gbfs_meetup_open_transport_200219
Prez multicycles api_gbfs_meetup_open_transport_200219Open Transport meetup by Kisio
 
Titanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhereTitanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhereAyoub Zamouchi
 
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...Vincent Terrasi
 

Ähnlich wie Geek Time Juin 2017 : GraphQL (20)

1er atelier technique - IGO2 - 17 mai 2017
1er atelier technique - IGO2 - 17 mai 20171er atelier technique - IGO2 - 17 mai 2017
1er atelier technique - IGO2 - 17 mai 2017
 
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
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
Presentation Drupal 8 au DrupalCamp Paris 2013
Presentation Drupal 8 au DrupalCamp Paris 2013Presentation Drupal 8 au DrupalCamp Paris 2013
Presentation Drupal 8 au DrupalCamp Paris 2013
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Les Web APIs en .NET Core
Les Web APIs en .NET CoreLes Web APIs en .NET Core
Les Web APIs en .NET Core
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
Azure bot service
Azure bot serviceAzure bot service
Azure bot service
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidement
 
Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !
Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !
Breizhcamp 2018 - Ma premiere app en Kotlin : je fais le point !
 
Êtes-vous API dans votre organisation ?
Êtes-vous API dans votre organisation ?Êtes-vous API dans votre organisation ?
Êtes-vous API dans votre organisation ?
 
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien PauletSPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
 
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS DakarLow code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
 
aOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content Services
aOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content ServicesaOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content Services
aOS Nice 2020 : Les nouveautés du MS Ignite 2020 sur les Content Services
 
Php forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du MondePhp forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du Monde
 
Prez multicycles api_gbfs_meetup_open_transport_200219
Prez multicycles api_gbfs_meetup_open_transport_200219Prez multicycles api_gbfs_meetup_open_transport_200219
Prez multicycles api_gbfs_meetup_open_transport_200219
 
Titanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhereTitanium, write in java script, run native everywhere
Titanium, write in java script, run native everywhere
 
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
 

Mehr von OLBATI

Geek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz JavaGeek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz JavaOLBATI
 
Geek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/BlockchainGeek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/BlockchainOLBATI
 
Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8OLBATI
 
Geek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : QuizGeek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : QuizOLBATI
 
Geek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : CucumberGeek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : CucumberOLBATI
 
Geek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics ObjectsGeek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics ObjectsOLBATI
 
Geek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy CodeGeek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy CodeOLBATI
 
Geek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting ToolsGeek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting ToolsOLBATI
 
Geek Time Août 2016 : Docker
Geek Time Août 2016 : DockerGeek Time Août 2016 : Docker
Geek Time Août 2016 : DockerOLBATI
 
Geek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.jsGeek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.jsOLBATI
 
Geek Time Juin 2016 : React
Geek Time Juin 2016 : ReactGeek Time Juin 2016 : React
Geek Time Juin 2016 : ReactOLBATI
 

Mehr von OLBATI (11)

Geek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz JavaGeek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz Java
 
Geek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/BlockchainGeek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/Blockchain
 
Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8
 
Geek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : QuizGeek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : Quiz
 
Geek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : CucumberGeek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : Cucumber
 
Geek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics ObjectsGeek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics Objects
 
Geek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy CodeGeek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy Code
 
Geek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting ToolsGeek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting Tools
 
Geek Time Août 2016 : Docker
Geek Time Août 2016 : DockerGeek Time Août 2016 : Docker
Geek Time Août 2016 : Docker
 
Geek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.jsGeek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.js
 
Geek Time Juin 2016 : React
Geek Time Juin 2016 : ReactGeek Time Juin 2016 : React
Geek Time Juin 2016 : React
 

Geek Time Juin 2017 : GraphQL

  • 1. Geek Time- Juin 2017 Atef ZAAFOURI Consultant - OLBATI
  • 2. OLBATI - Geek Time - Juin 2017 2 Plan ● Introduction ● Historique ● Limites de REST ● Les Concepts de Base ● Demo ● Relay, Apollo... ● Questions?
  • 3. OLBATI - Geek Time - Juin 2017 3 Introduction ● Définit un langage permettant de requêter et récupérer de manière déclarative des données depuis un back-end ● On décrit nos types de données sous forme d’un Graphe ● On définit nos Requêtes sur le client ● Implémentée en plusieurs langages de programmation
  • 4. OLBATI - Geek Time - Juin 2017 4 Introduction
  • 5. OLBATI - Geek Time - Juin 2017 5 Historique ● Créé par Facebook ● Remplacer tous les services REST nécessaires aux applications mobile ● En production depuis 2012 pour les applications iOS et Android de Facebook
  • 6. OLBATI - Geek Time - Juin 2017 6 Limites de REST ● REST est tout ou rien. Si vous requêtez un objet vous aurez spontanément tous les champs de l'objet ou rien ● REST oblige souvent à enchaîner plusieurs appels pour obtenir les données souhaitées ● REST n'est pas fait pour gérer facilement les relations entre objets, ● REST est statique, vous obtenez la réponse que le développeur de l'application a décidé de définir ● REST impose des échanges entre développeurs afin que les API REST implémentées puissent convenir à tous les projets ● REST n'est d'aucune aide pour vous garantir le type des données échangées
  • 7. OLBATI - Geek Time - Juin 2017 7 Limites de REST
  • 8. OLBATI - Geek Time - Juin 2017 8 Les Concepts de Base ● Hiérarchique ● Requêtes spécifiques au client ● Typage fort ● Rétrocompatibilité ● Introspectif ● Indépendant du transport
  • 9. OLBATI - Geek Time - Juin 2017 9 Les types ● Des Scalar : Boolean, String, Int, Float, etc.. ● Des « Object Types» ● Des interfaces, enum, List, non-null type etc…
  • 10. OLBATI - Geek Time - Juin 2017 10 Typage fort
  • 11. OLBATI - Geek Time - Juin 2017 11 Mutation
  • 12. OLBATI - Geek Time - Juin 2017 12 Mutation
  • 13. OLBATI - Geek Time - Juin 2017 13 Fragments
  • 14. OLBATI - Geek Time - Juin 2017 14 Documentation
  • 15. OLBATI - Geek Time - Juin 2017 15 DEMO
  • 16. OLBATI - Geek Time - Juin 2017 16 Relay ● Créer pour GraphQL ● Permet à chaque composant de définir les données dont il a besoin ● Au coeur de la plupart des applications Facebook
  • 17. OLBATI - Geek Time - Juin 2017 17 Relay
  • 18. OLBATI - Geek Time - Juin 2017 18 Thanks! Any questions? @azaafouri atef.zaafouri@olbati.com