Navigating your transition to GraphQL with GraphQL first development
GraphQL, l'avenir du REST ?
-
Upload
francois-zaninotto -
Category
Internet
-
view
767 -
download
1
Transcript of GraphQL, l'avenir du REST ?
![Page 1: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/1.jpg)
G R A P H Q L , L’ AV E N I R D U R E S T ?
F R A N Ç O I S Z A N I N O T T O - @ f r a n c o i s z
![Page 2: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/2.jpg)
![Page 3: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/3.jpg)
G R A P H Q Lg r a f kɥɛ l
G R A S K A F K A E C U E L L E
![Page 4: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/4.jpg)
L E P R O B L È M E
PA R T I E 1 / 6
![Page 5: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/5.jpg)
R E S T
![Page 6: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/6.jpg)
![Page 7: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/7.jpg)
1. GET /user
2. GET /tweets
3. GET /users?ids=[123,456,789,…]
4. GET /tweet_stats?ids=[123,456,789,…]
5. GET /notifications
6. POST /views
![Page 8: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/8.jpg)
![Page 9: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/9.jpg)
![Page 10: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/10.jpg)
![Page 11: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/11.jpg)
![Page 12: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/12.jpg)
![Page 13: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/13.jpg)
B R E A K I N G C H A N G E
![Page 14: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/14.jpg)
![Page 15: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/15.jpg)
![Page 16: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/16.jpg)
![Page 17: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/17.jpg)
![Page 18: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/18.jpg)
![Page 19: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/19.jpg)
R E S T I N P E A C E
• Trop de requêtes par page
• Mauvaise performance sur mobile
• Pas de standard
• Pas de schema
• Evolution impossible
• Actions limitées au CRUD
![Page 20: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/20.jpg)
L E S A U T R E S C A N D I D AT S
PA R T I E 2 / 6
![Page 21: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/21.jpg)
R E S T + +
GET /tweets?include=author&fields=[id,date,body]
![Page 22: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/22.jpg)
![Page 23: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/23.jpg)
S Q L O V E R H T T P
GET /data?query=SELECT t.id, t.date,t.body,a.nameFROM tweets t LEFT JOIN author a ON tweet.author_id = author.id
LIMIT 10
![Page 24: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/24.jpg)
P R O T O C O L B U F F E R S
![Page 25: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/25.jpg)
FA L C O R
![Page 26: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/26.jpg)
L E S A I N T G R A A L
• Langage de requêtage déclaratif
• Reposant sur du Remote Procedure Call
• Typage fort, schema
• Support des agrégats
• Standardisé
• Non lié à HTTP
![Page 27: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/27.jpg)
D É C O U V R E Z G R A P H Q L
PA R T I E 3 / 6
![Page 28: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/28.jpg)
POST / HTTP 1.1 Host: http://graphql.acme.com/ Content-Type: application/graphql { getTweet(id: 123) { id body date } }
HTTP/1.1 200 OK { "data": { "getTweet": { "id": "123", "body": "Lorem Ipsum", "date": "2017-07-14" } } }
GET /tweets/123 HTTP 1.1 Host: http://rest.acme.com/
HTTP/1.1 200 OK { "id": 123, "body": "Lorem Ipsum", "user_id": 456, "views": 45, "date": "2017-07-14", // etc. }
Req
uête
Rép
ons
e
REST GraphQL
![Page 29: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/29.jpg)
![Page 30: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/30.jpg)
POST / HTTP 1.1 Host: http://graphql.acme.com/ Content-Type: application/graphql { getTweets(limit: 10, sortField: "date", sortOrder: "DESC") { id body date } getUser { fullName } getNotificationsMeta { count } }
Req
uête
![Page 31: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/31.jpg)
HTTP/1.1 200 OK Content-Type: application/json { "data": { "getTweets": [ { "id": "752", "body": "The guy next to me is listening...", "date": "2017-07-15T13:17:42.772Z", }, { "id": "123", "body": "The Espionnage Act was designed to...", "date": "2017-07-14T12:44:17.449Z" }, // etc. ], "getUser": { "fullName": "John Doe" }, "getNotificationsMeta": { "count": 12 } } }
Rép
ons
e
![Page 32: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/32.jpg)
POST / HTTP 1.1 Host: http://graphql.acme.com/ Content-Type: application/graphql { getTweets(limit: 10, sortField: "date", sortOrder: "DESC") { id body date Author { username fullName avatarUrl } Stat { nbResponses nbRetweets nbLikes } } getUser { fullName } getNotificationsMeta { count } }
Req
uête
![Page 33: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/33.jpg)
![Page 34: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/34.jpg)
POST / HTTP 1.1 Host: http://graphql.acme.com/ Content-Type: application/graphql { getTweets(limit: 10, sortField: "date", sortOrder: "DESC") { id body date Author { username fullName avatarUrl } Stat { nbResponses nbRetweets nbLikes } } getUser { fullName } getNotificationsMeta { count } }
Req
uête
![Page 35: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/35.jpg)
{ "data": { "getTweets": [ { "id": "752", "body": "The guy next to me is listening...", "date": "2017-07-15T13:17:42.772Z", "Author": { "username": "quantian1", "fullName": "Quantian", "avatarUrl": "https://amce.com/avatars/34345745634", }, "Stat": { "nbResponses": 3 "nbRetweets": 4, "nbLikes": 40 } }, // etc. ], "getUser": { "fullName": "John Doe" }, "getNotificationsMeta": { "count": 12 } } }
Rép
ons
e
![Page 36: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/36.jpg)
![Page 37: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/37.jpg)
POST / HTTP 1.1 Host: http://graphql.acme.com/ Content-Type: application/graphql { getTweets(limit: 10, sortField: "date", sortOrder: "DESC") { id body date Author { username fullName avatarUrl } Stat { nbResponses nbRetweets nbLikes } } getUser { fullName } getNotificationsMeta { count } }
Req
uête
![Page 38: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/38.jpg)
![Page 39: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/39.jpg)
![Page 40: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/40.jpg)
# entry points type Query { getTweet(id: ID!): Tweet getTweets(limit: Int, sortField: String, sortOrder: String): [Tweet] getUser: User getNotificationsMeta: Meta }
# custom types type Tweet { id: ID! body: String date: Date Author: User Stats: Stat }
type User { id: ID! username: String firstName: String lastName: String fullName: String name: String @deprecated avatarUrl: Url
![Page 41: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/41.jpg)
# entry points type Query { getTweet(id: ID!): Tweet getTweets(limit: Int, sortField: String, sortOrder: String): [Tweet] getUser: User getNotificationsMeta: Meta }
# custom types type Tweet { id: ID! body: String date: Date Author: User Stats: Stat }
type User { id: ID! username: String firstName: String lastName: String fullName: String name: String @deprecated avatarUrl: Url
![Page 42: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/42.jpg)
![Page 43: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/43.jpg)
POST / HTTP 1.1 Host: http://graphql.acme.com/ Content-Type: application/graphql { getTweets(limit: 10, sortField: "date", sortOrder: "DESC") { id body date(timezone: "UTC +2") Author { username fullName avatarUrl TopTweets(limit: 10) { body date(timezone: "UTC +2 ») Stats { nbResponses nbRetweets } } } Stat { nbResponses nbRetweets } } }
Req
uête
![Page 44: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/44.jpg)
L E L A N G A G E G R A P H Q L
• Types
• Champs
• Requêtes, Mutations, Abonnements
• Variables
• Fragments
• Directives
![Page 45: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/45.jpg)
![Page 46: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/46.jpg)
C O M M E N T G R A P H Q L R É P O N D A V O S D E M A N D E S
PA R T I E 4 / 6
![Page 47: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/47.jpg)
type Query { getTweet(id: ID!): Tweet getTweets(limit: Int): [Tweet] } type Tweet { id: ID! body: String Author: User } type User { fullName: String }
![Page 48: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/48.jpg)
![Page 49: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/49.jpg)
const resolvers = { Query: { getTweet: (_, params) => tweets.find(t => t.id == params.id), getTweets: (_, params) => tweets.slice(0, params.limit), }, Tweet: { id: tweet => tweet.id, body: tweet => tweet.body, Author: tweet => users.find(a => a == tweet.author_id), }, User: { fullName: user => `${user.first_name} ${user.last_name}`, }, };
![Page 50: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/50.jpg)
{ getTweet(id: "1") { id body Author { fullName } } }
getTweet: (_, params) => tweets.find(t => t.id == params.id)
(null, { id: 1 }) { id: 1, body: 'Lorem Ipsum’, author_id: 10 }
1
![Page 51: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/51.jpg)
{ getTweet(id: "1") { id body Author { fullName } } }
Tweet: { id: tweet => tweet.id, body: tweet => tweet.body, Author: tweet => users.find(a => a == tweet.author_id), }
{ id: 1, body: 'Lorem Ipsum’, author_id: 10 }12
![Page 52: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/52.jpg)
{ getTweet(id: "1") { id body Author { fullName } } }
12 { id: ‘1’, body: 'Lorem Ipsum’, Author: {
id: 10, first_name: ‘John', last_name: 'Doe' } }
{ id: 1, body: 'Lorem Ipsum’, author_id: 10 }
![Page 53: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/53.jpg)
{ getTweet(id: "1") { id body Author { fullName } } }
12
User: { fullName: user => `${user.first_name} ${user.last_name}`, }
3
{ id: 1, body: 'Lorem Ipsum’, author_id: 10 }
{ id: ‘1’, body: 'Lorem Ipsum’, Author: { id: 10, first_name: ‘John', last_name: 'Doe' } }
![Page 54: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/54.jpg)
12
{ id: ‘1’, body: 'Lorem Ipsum’, Author: { fullName: ‘John Doe' } }
{ id: ‘1’, body: 'Lorem Ipsum’, Author: { id: 10, first_name: ‘John', last_name: 'Doe' } }
{ id: 1, body: 'Lorem Ipsum’, author_id: 10 }
3
{ getTweet(id: "1") { id body Author { fullName } } }
![Page 55: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/55.jpg)
![Page 56: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/56.jpg)
![Page 57: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/57.jpg)
AVA I L A B L E I N Y O U R S E R V E R L A N G U A G E
• JavaScript
• PHP
• Ruby
• Python
• Go
• Java
• Scala
• C#
• Elixir
• Fortran
• BrainFuck
• etc…
![Page 58: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/58.jpg)
![Page 59: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/59.jpg)
![Page 60: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/60.jpg)
![Page 61: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/61.jpg)
![Page 62: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/62.jpg)
const query = ` { getTweet(id: "1") { id body Author { name } } }`;
const headers = new Headers(); myHeaders.append('Content-Type', 'application/graphql');
fetch(‘/graphql’, { method: 'POST', body: query, headers }); .then(response => response.json) .then(response => response.data.getTweet) .then(tweet => ...);
![Page 63: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/63.jpg)
import React from 'react'; import { gql, graphql } from 'react-apollo'; import LinearProgress from 'material-ui'; const Tweet = ({ data: { loading, tweet } }) => ( <div> {loading ? ( <LinearProgress /> ) : ( <div> <img src={tweet.author.avatar} className="avatar" /> <span className="author">{tweet.Author.name}</span> <div className="body">{tweet.body}</div> </div> )} </div> ); const query = gql`{ getTweet(id: "1") { id body Author { name } } }`; export default graphql(query)(App);
![Page 64: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/64.jpg)
AVA I L A B L E I N Y O U R C L I E N T L A N G U A G E
• Vue.js
• React.js
• Angular.js
• Meteor.js
• Objective-C
• Swift
• Expo
• Java
• Kotlin
• Dart
• Fart
• etc…
![Page 65: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/65.jpg)
![Page 66: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/66.jpg)
![Page 67: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/67.jpg)
T O U T E S T P R Ê T P O U R V O U S A C C U E I L L I R
• Simple
• Stable
• Sécurisé
• Performant
• Documenté
• Supporté
![Page 68: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/68.jpg)
G R A P H Q L , A N G E O U D É M O N ?
PA R T I E 5 / 6
![Page 69: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/69.jpg)
![Page 70: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/70.jpg)
![Page 71: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/71.jpg)
![Page 72: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/72.jpg)
![Page 73: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/73.jpg)
#diversité
![Page 74: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/74.jpg)
![Page 75: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/75.jpg)
![Page 76: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/76.jpg)
![Page 77: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/77.jpg)
![Page 78: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/78.jpg)
![Page 79: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/79.jpg)
![Page 80: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/80.jpg)
POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 500 Internal Server Error POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 500 Internal Server Error POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK POST /graphql 200 OK
![Page 81: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/81.jpg)
![Page 82: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/82.jpg)
{ Tweets(limit: 100) { Author { Tweets(limit: 100) { Author { Tweets(limit: 100) { Author { Tweets(limit: 100) { Author { name } } } } } } } } }
![Page 83: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/83.jpg)
Client Serverquery
Client Serverid
Dictionary Dictionary
query id id query
Pers
iste
d Q
uerie
s
![Page 84: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/84.jpg)
![Page 85: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/85.jpg)
G R A P H Q L , C ’ E S T P O U R Q U I ?
PA R T I E 6 / 6
![Page 86: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/86.jpg)
![Page 87: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/87.jpg)
Q U E L T Y P E D E D E V I C E U T I L I S E N T V O S C L I E N T S ?Q U E S T I O N # 1
D E S K T O P M O B I L E E T / O U D E S K T O P
![Page 88: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/88.jpg)
L A P E R F O R M A N C E C Ô T É C L I E N T E S T- E L L E I M P O R TA N T E ?
Q U E S T I O N # 2
N O N
O U I
![Page 89: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/89.jpg)
C O M B I E N D E R O U T E S A V O T R E A P I R E S T ? Q U E S T I O N # 3
5 A U P L U S
A U M O I S 6
![Page 90: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/90.jpg)
Q U E L L E E S T L A D U R É E D E V I E D E V O T R E A P I ? Q U E S T I O N # 4
A U M O I N S U N A N Q U E L Q U E S
M O I S
![Page 91: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/91.jpg)
Q U E L E S T L E N I V E A U D E C O M P L E X I T É D E V O T R E A P I ?
Q U E S T I O N # 5
S I M P L E
C O M P L E X E
![Page 92: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/92.jpg)
S U R L A P L U S C O M P L E X E S D E S PA G E S D U C L I E N T, C O M B I E N D E P E R S I S T E N C E S S O N T A P P E L E E S ?
Q U E S T I O N # 6
U N
P L U S D E U N
![Page 93: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/93.jpg)
AV E Z - V O U S D E S R È G L E S D E C A C H E C O M P L E X E S ? Q U E S T I O N # 7
N O N
O U I
![Page 94: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/94.jpg)
C O M M E N T T R AVA I L L E N T V O S É Q U I P E S F R O N T E T B A C K ?
Q U E S T I O N # 8
B A C K L O G C O M M U N
S I L O
![Page 95: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/95.jpg)
C O M B I E N D E D É V E L O P P E U R S ( F R O N T + B A C K ) T R AVA I L L E N T AV E C L’ A P I ?
Q U E S T I O N # 9
A U M O I N S C I N Q
U N À Q U AT R E
![Page 96: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/96.jpg)
Q U E L E S T V O T R E T Y P E D E L A N G A G E P R É F É R É ?Q U E S T I O N # 1 0
F O R T E M E N T T Y P É
FA I B L E M E N T T Y P É
![Page 97: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/97.jpg)
![Page 98: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/98.jpg)
![Page 99: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/99.jpg)
![Page 100: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/100.jpg)
![Page 101: GraphQL, l'avenir du REST ?](https://reader030.fdocuments.net/reader030/viewer/2022013013/5a6e14eb7f8b9a8b2b8b6259/html5/thumbnails/101.jpg)
M E R C I ! D E S Q U E S T I O N S ?
F R A N Ç O I S Z A N I N O T T O @ f r a n c o i s z