Referencia rápida

Hoja de trucos de GraphQL

Guía de referencia rápida para GraphQL: sintaxis de consultas, argumentos, alias, fragmentos, mutaciones, definiciones SDL de esquema y HTTP.

· Publicado

GraphQL es un lenguaje de consulta para APIs y un entorno de ejecución para responder consultas con tus datos existentes.

Consultas (Queries)

Consulta básica y respuesta JSON

{ status }

JSON Response:

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

Objetos anidados

{
  hero {
    name
    height
  }
}

Listas

{
  friends {
    name
  }
}

Argumentos

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

Alias

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

Nombres de operaciones y variables

Query Definition:

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

Variables Payload (JSON):

{
  "id": "1000"
}

Mutaciones (Mutations)

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

Fragmentos en línea (Inline Fragments)

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

GraphQL sobre HTTP

Petición GET

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

Petición POST

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' }
  })
})

Lenguaje de definición de esquema (SDL)

Tipos básicos

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

type User {
  id: ID!
  name: String
}

Tipos escalares incorporados

Escalar Descripción
Int Entero de 32 bits con signo
Float Número de coma flotante de doble precisión
String Secuencia de caracteres UTF-8
Boolean Valor booleano true o false
ID Identificador único serializado como string

Palabras clave de definición de tipos

Palabra clave Descripción
type Tipo de objeto que representa un conjunto de campos
scalar Tipo escalar primitivo personalizado
interface Tipo abstracto que define campos obligatorios
union Tipo abstracto que agrupa distintos tipos de objeto
enum Enumeración de valores de cadena discretos permitidos
input Objeto complejo pasado como argumento en consultas o mutaciones

Modificadores de tipo

Modificador Descripción
String Cadena que permite nulos (Nullable)
String! Cadena obligatoria no nula (Non-nullable)
[String] Lista que permite nulos con cadenas que permiten nulos
[String]! Lista obligatoria con cadenas que permiten nulos
[String!]! Lista obligatoria con cadenas obligatorias

Interfaces

interface Entity {
  id: ID!
}

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

Enumeraciones (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Uniones (Unions)

union SearchResult = Human | Droid | Starship

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

Referencias

Temas relacionados