Créer une API GraphQL avec Symfony

Preview:

Citation preview

Créer une API GraphQLavec Symfony

Paris, le 21 février 2017

Qui suis-je?Sébastien RossetDéveloppeur PHP depuis 2000Symfony depuis 2015Freelance

@srosset81

La première plateforme qui rassemble tous les acteurs du bien commun(associations, ONG, bénévoles, donateurs, experts, porteurs de projets…)

Lancement prévu courant 2017 – www.goodship.eu

La générosité en action

Quelle technologie pour demain?• Chargement rapide• Micro-interactions• Animations

Le meilleur des deux mondes !

Pourquoi GraphQL ?

Un nouveau standard pour les API• Vise à remplacer REST (défini en 2000)• Développé par Facebook• Utilisé en prod depuis 2012• Open-source depuis 2015• Nombreuses implémentations

côté back-end et front-end

Javascript / Ruby / PHP / Python / Java / C++ / Go / Scala / .NET / Elixir / Haskell / SQL / Lua / Elm / Clojure / Swift / OCaml / Rust …

1. Déclaratif On obtient exactement ce dont on a besoin,Ni plus, ni moins.

{ REST }Une dizaine derequêtes pour une seule page

2. Auto-documenté

{ REST }Impossible à utiliser sans une documentation conséquente.

3. Fortement typé

{ REST }Aucun typage. On reçoit les données «brut»

On peut même définir ses propres types.

+ Validation automatique!

4. API unique• Un seul point d’entrée : /graphql

• Pas de gestion de versions (On peut marquer des champscomme «deprecated»)

• Tous les supports utilisent le même API

{ REST }Gestion des versions

très délicate.

Les développeurs back-end et front-end peuvent se réconcilier !

Pourquoi Symfony ?

Un écosystème idéal pour le back-end

https://github.com/Youshido/GraphQLBundle

Disponible depuis février 2016

DEMO !

www.github.com/srosset81/symfony-graphql-demo

Une transition douce !• Transformer progressivement une application Symfony en API• Appeler d’autres APIs et serveurs via un seul endpoint GraphQL (

www.github.com/APIs-guru/graphql-apis)

Futur du bundle Youshido• Subscriptions• Extensions (gestion des uploads, résultats paginés…)• Générateur de types• Livre à paraître en septembre 2017• Peut-être votre contribution ?

www.github.com/Youshido/GraphQLwww.github.com/Youshido/GraphQLBundle

Pour aller plus loin…www.graphql.orgwww.learngraphql.com

GraphQL Europe (17 mai 2017, Berlin)www.twitter.com/graphqleu

www.github.com/lexik/jwt-authentication-bundlewww.github.com/Youshido/GraphQLDemoAppwww.github.com/srosset81/symfony-graphql-demo

Pour son lancement, aura besoin d’un

Pour son API GraphQL et son infrastructure serveur (Docker, etc.)

DevOp Symfony

06 45 95 51 87www.twitter.com/srosset81

Merci !

www.github.com/srosset81/symfony-graphql-demo

Recommended