GraphQL : le futur de REST ?

Attention : le contenu de cet article est plutôt technique.

Aujourd’hui : REST

À l’origine, il y avait SOAP. Une première forme de standardisation des services web utilisant XML.

Puis, avec les améliorations de Javascript, des navigateurs et des serveurs web est arrivée une nouvelle architecture : REST.

REST utilise XML mais aussi et surtout JSON. L’accès aux données est basé sur les URL. C’est standardisé et bien sécurisé sans être une usine à gaz.

Sauf qu’il y a aujourd’hui quelques limites qui commencent à être atteinte et quelques améliorations suggérées par les usages actuels des services web.

Demain : GraphQL ?

GraphQL a été présenté il y a environ 2 ans par Facebook.

En gros, il s’agit de s’appuyer sur un langage de requêtes côté client. C’est le client qui détermine son affichage et non le serveur.

Par exemple, pour aller chercher uniquement les nom, prénom, les URL des photos de l’utilisateur « john.doe » de ma base de données, je ferai une requête de type :

{
  user(username: "john.doe") {
    firstName
    lastName
    photos {
      url
    }
  }
}

Et je recevrai une réponse de type :

{
  "data": {
    "user": {
      "firstName": "John",
      "lastName": "Doe",
      "photos": [
        {
          "url": "https://..."
        },
        {
          "url": "https://..."
        },
        {
          "url": "https://..."
        }
      ]
    }
  }
}

C’est plutôt pratique, même s’il reste encore des points à éclaircir pour en faire un véritable standard.

En tout cas, avec REST, cela aurait été une horreur à intégrer !

Quel avenir pour GraphQL et REST ?

Aujourd’hui, REST est bien en place dans l’industrie et pour une bonne dizaine d’années encore.

GraphQL pourra cohabiter avec REST. Dans un premier temps sous forme d’API secondaire, puis progressivement sous forme d’API principale.

D’autant que son intégration est assez rapide et plutôt pratique côté client avec des outils comme React + Relay (Javascript), Apollo (iOS / Swift, Android / Java) et autres.

Node.js (Javascript), Ruby on Rails (Ruby) et Symfony (PHP) permettent de créer des services GraphQL côté serveur.

Qui utilise GraphQL aujourd’hui ?

Parmi les early adopters de GraphQL, nous pouvons citer :

  • Facebook
  • GitHub
  • Pinterest
  • Shopify
  • 20 minutes
  • Allociné
  • Club Med

L’avenir semble donc bien être à GraphQL 🙂

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s