GraphQL is for Everyone

Eve Porcello

@eveporcello

bit.ly/graphqleveryone

Eve Porcello

@eveporcello

eve@moonhighway.com

What is GraphQL?

{ }

{ }

Query

Response

GraphQL Server

DSL

type User {
  id: ID!
  firstName: String!
  lastName: String!
  age: Int!
  admin: Boolean!
}

How We Get Data with REST

/lifts/panorama

/trails/ocean-breeze

Noice!

/trails/songstress

/trails/hemmed-slacks

/trails/blackhawk

[
  {
    "name": "Panorama",
    "type": "gondola",
    "capacity": 8,
    "status": "open",
    "manufacturer": "Garaventa",
    "built": 2014,
    "summer": true,
    "night": false,
    "elevation_gain": 2800,
    "time": "9 minutes",
    "hours": "9:00am - 4:00pm",
    "updated": "9:45am",
    "trails": [
      "/class/api/snowtooth/trails/ocean-breeze",
      "/class/api/snowtooth/trails/songstress",
      "/class/api/snowtooth/trails/hemmed-slacks",
      "/class/api/snowtooth/trails/blackhawk"
    ]
  }
]
{
  "name": "Ocean Breeze",
  "lift": [
    "/class/api/snowtooth/lifts/panorama"
  ],
  "difficulty": "intermediate",
  "status": "open",
  "groomed": false,
  "snowmaking": false,
  "trees": true,
  "night": true
}
{
  "name": "Hemmed Slacks",
  "lift": [
    "/class/api/snowtooth/lifts/panorama"
  ],
  "difficulty": "intermediate",
  "status": "open",
  "groomed": false,
  "snowmaking": false,
  "trees": true,
  "night": false
}
{
  "name": "Songstress",
  "lift": [
    "/class/api/snowtooth/lifts/panorama"
  ],
  "difficulty": "expert",
  "status": "closed",
  "groomed": false,
  "snowmaking": false,
  "trees": true,
  "night": false
}
{
  "name": "Blackhawk",
  "lift": [
    "/class/api/snowtooth/lifts/astra-express",
    "/class/api/snowtooth/lifts/panorama"
  ],
  "difficulty": "intermediate",
  "status": "open",
  "groomed": false,
  "snowmaking": false,
  "trees": false,
  "night": false
}

/lifts/panorama

/trails/ocean-breeze

/trails/songstress

/trails/hemmed-slacks

/trails/blackhawk

How We Get Data with GraphQL

That's what's up

query {
  lift(name:"Panorama") {
    status
    trails {
      name
      status
    }
  }
}
{
  "data":{
    "lift":{
      "status":"hold",
      "trails": [
        {
          "name": "Hot Potato",
          "status": "open"
        },
        {
          "name": "West Elm",
          "status": "closed"
        }
      ]
    }
  }
}

POST     /graphql

Query

https://skiresort.com/graphql

What's Next?

Links! bit.ly/graphqleveryone

Thank You!

  • Links: bit.ly/graphqleveryone
  • Website: www.moonhighway.com
  • Mailing List: bit.ly/moonhighway
  • Twitter: @eveporcello 

GraphQL is for Everyone

By Moon Highway

GraphQL is for Everyone

  • 907