Introduction to

Graphql

David Novicki

WHY?!

Flexible
Dynamic
Modular

Foundations

 

  • Queries
  • Mutations
  • Schemas and Types
  • Resolvers

Queries

At it's simplest form, asking for fields on objects. Think of queries as refined GET methods

Queries

This includes nested objects or arrays as well as the ability to chain multiple queries in parallel

Queries

And further more, we can add arguments to our queries

Queries

Just like most query languages, we are able to add inline logic to our query through GraphQL directives and variables

Mutations

Think as mutations as the POST of GraphQL

Mutations

Mutations allow the ability to run queries upon completion so you can execute POST then GET functionality in a single request

Mutations

Multiple mutations will always run in series rather than parallel as to avoid side-effects

Schemas and Type System

Schemas are the glue/mapping for our query language to business logic

Schemas and Type System

They define a general outline of abilities and provide a validation layer to all incoming queries and mutations 

Resolvers

The foundation for queries and mutations to all your custom business logic. All queries and mutations must have a corresponding resolvers

REST VS GRAPHQL

REST

Pros:

  • Widely adopted
  • Standardized

 

Cons:

  • Verbose
  • Rigid
  • Redundant

GRAPHQL

Pros:

  • Flexible
  • Efficient
  • Standardized foundations

Cons:

  • New kid on the block
  • Learning curve

Example

GET: /authors/:id

GET: /authors/:id/posts

​GET: /authors/:id/posts/:id/

GraphQL

REST

Example

Returns all data resulting in large response sizes

GraphQL

REST

Incremental adoption

Features

Remote Stitching

Features

Authentication

and

Authorization

Features

The End

Continuing Resources

  • graphql.github.io
  • medium.com/@novicki_david
  • github.com/chentsulin/awesome-graphql

Graphql

By David Novicki

Graphql

An introduction to GraphQL

  • 164