Snabbreferens

GraphQL Fusklapp

Snabbreferens för GraphQL: frågesyntax, argument, alias, fragment, mutationer, SDL-schemadefinitioner, skalärer och HTTP-anrop.

· Publicerad

GraphQL är ett frågespråk för API:er och en körtidsmiljö för att besvara frågor med befintliga applikationsdata.

Frågor (Queries)

Grundläggande fråga och JSON-svar

{ status }

JSON Response:

{
  "data": {
    "status": "available"
  }
}

Kapslade objekt

{
  hero {
    name
    height
  }
}

Listor

{
  friends {
    name
  }
}

Argument

{
  hero(id: "1000") {
    id
    name
  }
}

Alias

{
  luke: hero(id: "1000") {
    name
  }
  han: hero(id: "1001") {
    name
  }
}

Operationsnamn och variabler

Query Definition:

query FindHero($id: String!) {
  hero(id: $id) {
    name
  }
}

Variables Payload (JSON):

{
  "id": "1000"
}

Mutationer (Mutations)

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

Inline-fragment

{
  search(q: "john") {
    id
    ... on User {
      name
    }
    ... on Comment {
      body
      author {
        name
      }
    }
  }
}

GraphQL över HTTP

GET-förfrågan

fetch('https://api.example.com/graphql?query={me{name}}')

POST-förfrågan

fetch('https://api.example.com/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: 'query GetHero($id: String!) { hero(id: $id) { name } }',
    variables: { id: '1000' }
  })
})

Schema Definition Language (SDL)

Grundtyper

type Query {
  me: User
  users(limit: Int): [User]
}

type User {
  id: ID!
  name: String
}

Inbyggda skalära typer

Skalär Beskrivning
Int 32-bitars heltal med tecken
Float Flyttal med dubbel precision
String UTF-8 teckensekvens
Boolean Booleskt värde true eller false
ID Unikt ID serialiserat som sträng

Nyckelord för typdefinition

Nyckelord Beskrivning
type Objekttyp som representerar en uppsättning fält
scalar Anpassad primitiv skalär typ
interface Abstrakt typ som definierar fält som måste implementeras
union Abstrakt typ som grupperar distinkta objekttyper
enum Uppräkning av tillåtna diskreta strängvärden
input Komplext indataobjekt som skickas som argument

Typmodifierare (Type Modifiers)

Modifierare Beskrivning
String Nullable sträng
String! Icke-nullable obligatorisk sträng
[String] Nullable lista med nullable strängar
[String]! Obligatorisk lista med nullable strängar
[String!]! Obligatorisk lista med obligatoriska strängar

Gränssnitt (Interfaces)

interface Entity {
  id: ID!
}

type User implements Entity {
  id: ID!
  name: String
}

Uppräkningar (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Unioner (Unions)

union SearchResult = Human | Droid | Starship

type Query {
  search(text: String): [SearchResult]
}

Referenser

Relaterade ämnen