GraphQL
Sebastian Siemssen
Prerequisites
- Node 7.0.0+
- Yarn (preferred) or npm
- Drupal development environment
- The editor of your choice
https://github.com/AmazeeLabs/mountaincamp-graphql
https://swapi.co/
GET api/people/1
{
"name": "Luke Skywalker",
"height": "1.72 m",
"mass": "77 Kg",
"hair_color": "Blond",
"skin_color": "Caucasian",
"eye_color": "Blue",
"birth_year": "19 BBY",
"gender": "Male",
"homeworld": "http://swapi.co/api/planets/1/",
"films": [
"http://swapi.co/api/films/1/",
"http://swapi.co/api/films/2/",
"http://swapi.co/api/films/3/"
],
"species": [
"http://swapi.co/api/species/1/"
],
"vehicles": [
"http://swapi.co/api/vehicles/14/",
"http://swapi.co/api/vehicles/30/"
],
"starships": [
"http://swapi.co/api/starships/12/",
"http://swapi.co/api/starships/22/"
],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-10T13:52:43.172000Z",
"url": "http://swapi.co/api/people/1/"
}
GET api/films/1
GET api/films/2
GET api/films/3
Often we are overfetching and underfetching at the same time causing bloated payloads and additional roundtrips
Often we are overfetching and underfetching at the same time causing bloated payloads and additional roundtrips
We can solve that
GET api/persons-with-films/1
GET api/persons/1?include-films
GET api/persons/1?include=films,...
App #1
App #2
App #3
App #4
Multiple apps
App #1
App #2
App #3
App #4
Multiple versions of multiple apps
Complexity and code debt spiraling out of control
A data querying language
Runs on arbitrary code ...
Backed by a schema ...
Based on a type system ...
Making it fully introspective ...
It runs on arbitrary code.
It is completely agnostic of your storage layer and can potentially support any backend architecture.
Anatomy of a GraphQL Server
GraphQL
Your application code
Database
Internal APIs
Remote APIs
Type definitions
Evolving the server–client relationship
Server publishes possibilities
Client specifies concrete data requirements
Schema
Each schema is an arbitrarily nested hierarchy of type definitions.
Introspection
Exposing your own schema through the type system.
GraphQL Quick Introduction
By Sebastian Siemssen
GraphQL Quick Introduction
- 1,419