Add GraphQL

This commit is contained in:
Rico Sta. Cruz 2016-12-28 03:28:39 +08:00
parent e77149233b
commit 1951ba971d
No known key found for this signature in database
GPG Key ID: CAAD38AE2962619A
1 changed files with 100 additions and 0 deletions

100
graphql.md Normal file
View File

@ -0,0 +1,100 @@
---
title: GraphQL
category: Misc
---
## Queries
```js
{ status }
// → { status: 'available' }
```
### Nesting
```js
{ hero { name height } }
// → { hero:
// { name: "Luke Skywalker",
// height: 1.74 } }
```
### Lookups
```js
{
hero(id: "1000") { id name }
}
// → { hero:
// { id: "1000",
// { name: "Luke Skywalker" } }
```
### Aliases
```js
{
luke: hero(id: "1000") { name }
han: hero(id: "1001") { name }
}
// → { luke:
// { name: "Luke Skywalker" },
// han:
// { name: "Han Solo" } }
```
### Variables
```js
{ hero(id: $id) } // Query
---
{ id: '1000' } // Variables
```
### Operation name
Just to make things less ambiguous.
```js
query FindHero($id: String) {
hero(id: $id) { name }
}
```
### Mutations
Mutations are just fields that do something when queried.
```js
{ createReview($review) { id } } // Query
---
{ review: { stars: 5 } } // Variables
// → { createReview: { id: 5291 } }
```
Over HTTP
---------
```js
// Get
fetch('http://myapi/graphql?query={me{name}')
```
### POST
```js
// Post
fetch('http://myapi/graphql', {
body: JSON.stringify({
query: "...",
operationName: "...",
"variables": { ... }
})
})
References
----------
- <http://graphql.org/learn/queries/>
- <http://graphql.org/learn/serving-over-http/>