GraphQL
by David J McClelland · Published · Updated
Queries:
query { allLifts { name capacity } liftCount }
Inline filtering w an enum
query { liftCount(status: OPEN) }
Two of the same query require aliasing to namespace them
query { openLifts: liftCount(status: OPEN) closedLifts: liftCount(status: CLOSED) }
Aliasing can simply be a way to rename a field (liftName)
query { allLifts { liftName: name capacity } }
Pass variables into filters. They must be typed and prefixed with $.
query ($status: LiftStatus) { liftCount: liftCount(status: $status) }
Note: you must add the variable value in the QUERY VARIABLES section below the query input box in sandbox – in a production use case it would be passed in the HTTP Header.
Associating data
query () { allLifts { liftName: name capacity status night trailAccess{ name status accessedByLifts { name } } } }
In this example the lift has a trailAccess. The trailAccess has accessedByLifts. A trail could be accessed by more than one lift, but accessedByLifts will definitely contain the lift identified as liftName in the result, as in the following result fragment:
{ "name": "Blackhawk", "status": "OPEN", "accessedByLifts": [ { "name": "Astra Express" }, { "name": "Panorama" } ] },
Operation Names – you need names in order to add multiple queries to a request. Use PascalCase. You can still only send one at a time.
query AllLifts { allLifts { liftName: name capacity status night } } query AllTrails { AllTrails { name status } }
Mutations
mutation { setTrailStatus(id: "goosebumps" status:CLOSED) { name status }}
Fragments (composition via fragments) LiftDetails included via spread operator.
query { allLifts { ...LiftDetails } Lift(id: "panorama") { ...LiftDetails } } fragment LiftDetails on Lift { id name status capacity trailAccess { name } elevationGain night }
Subscriptions. Waits for a change to status and sends the name and new status of the trail that changed right when it happens.
subscription { trailStatusChange { name status } }
Scalars
Int, Float, String, Boolean, ID. ! == required/not nullable.
Recently Updated
-
- contributed 3 minutes ago
-
- contributed Oct 19, 2021
-
- contributed Oct 19, 2021
-
- contributed Oct 19, 2021
-
- contributed Oct 19, 2021
-
- contributed Oct 19, 2021