Skip to content

Latest commit

 

History

History
110 lines (81 loc) · 4.12 KB

20180626_SGCIB_GraphQL.adoc

File metadata and controls

110 lines (81 loc) · 4.12 KB

BBL From Rest to GraphQL

Table of Contents

Présenté par Mathieu BRETON, Co-Founder et CTO chez JS-Republic.

Abstract

From REST to GraphQL

Ce BBL vous montrera comment, étape par étape, migrer un blog basique fait avec une API REST vers une implémentation full GraphQL (et sans Apolo).

Notes

  • GraphQL

    • spécification de communication pour API

    • over HTTP, typé fortement

→ REST tire énormément parti de la puissance d’HTTP, et plus particulièrement de son cache.

  • Pourquoi avoir créé GraphQL ?

    • mettre à disposition la bonne quantité de data pour tous les types de devices

    • pour alléger les échanges (les headers HTTP pouvant être très lourds)

    • faciliter la mise à disposition des data pour les différentes version d’un client (ex: les différentes versions d’Android en cours d’usage à un moment donné)

📎
GraphQL pour les microservices et le serverless
Mathieu indique que GraphQL est particulièrement adapté quand on fait du microservices et du serverless.
→ On s’adapte en effet à tous les langages
📎
Adhésion à Falcor
Soyons clair, Falcor (développé par Netflix) a perdu la guerre par rapport à GraphQL.
  • Concepts clés de GraphQL :

    • une API GraphQL n’a qu’un seul end-point

    • QUE du POST

    • pour définir la structure d’une API GraphQL, on définit un schéma

github.com/graphql/graphiql[GraphiQL] : IDE de visualisation / manipulation d’une API GraphQL (marche avec un server Node.js)

  • 3 grands types de données :

    • type : déclare la forme des modèles

    • query : requêtes pour récupérer les data

    • mutation : actions pour transformer les data

    → 1 seul query et mutation par API GraphQL

  • Obligatoirement 1 resolver par type déclaré

20180626 GraphQL
My image
  • GraphQL est "promesse aware"

  • axios librairie pour faire des appels HTTP en JS

📎
De nouveau Visual Studio Code
Comme beaucoup de dev pour du JS ou du Node (la majorité), Mathieu utilise Visual Studio Code (ici pour sa démo de GraphQL)
  • Input Type : Fait pour représenter des objets complexes en paramètre de mutation

Conclusion

  • Apollo est une implémentation de la spec GraphQL qui apporte plus de fonctionnalités.
    Pour démarrer en GraphQL, Apollo est un peu une usine à gaz. Mais on peut très bien se mettre à l’utiliser après coup.

    • Apollo offre une fonctionnalité de cache, absente en GraphQL "de base" (la grosse différence entre Apollo et GraphQL)

    • On peut exporter ses logs / stats sur une API en SaaS sur Apollo (avec un OPS sympa côté sécurité…​)

    • Attention ! Apollo ne supporte peut-être que le Node.js

  • GraphQL est massivement soutenu par Facebook.
    → Donc on va facilement trouver des exemples de code / projet utilisant React et GraphQL (utilisation de toute la stack Facebook)
    → Pour information, le site de cours en ligne Wes Bos (bien connu dans le domaine du Front), est justement en train de travailler sur un cours complet portant sur la stack React / GraphQL.

  • La doc des API est native (via GraphiQL), mais pas de Swagger (sauf peut-être avec Apollo)

Ressources