Buscar..


Observaciones

GraphQL es un lenguaje de consulta para API y un tiempo de ejecución para cumplir esas consultas con sus datos existentes. GraphQL proporciona una descripción completa y comprensible de los datos en su API, le da a los clientes el poder de pedir exactamente lo que necesitan y nada más, facilita la evolución de las API a lo largo del tiempo y habilita poderosas herramientas para desarrolladores.

¿Cuándo debo usar GraphQL?

GraphQL está pensado para ser la API HTTP orientada hacia el exterior para cualquier tipo de aplicación, pero es más potente cuando los datos se normalizan con colecciones | Tablas | Nodos altamente interconectados. GraphQL Query Language (GQL) está diseñado para proyectar datos interconectados de una manera muy intuitiva y flexible.

Implementaciones

GraphQL en sí es una especificación y se implementa mediante varios lenguajes de programación diferentes. Estos son los lenguajes soportados más populares

Bibliotecas de clientes

Las consultas en ejecución desde el lado del cliente se pueden hacer con cualquier cliente HTTP, pero las bibliotecas del lado del cliente pueden ser muy beneficiosas.

Herramientas de desarrollo

Versiones

Versión Fecha de lanzamiento
v0.5.0 2016-04-08
v0.6.0 2016-05-10
v0.6.1 2016-07-07
v0.6.2 2016-07-21
v0.7.0 2016-08-26
v0.7.1 2016-09-29
v0.7.2 2016-10-10
v0.8.0 2016-11-10
v0.8.1 2016-11-11
v0.8.2 2016-11-16

Instalación e implementación del servidor

GraphQL.js

GraphQL.js es una implementación de referencia de JavaScript para GraphQL. Puedes instalarlo vía npm:

  • Inicialice npm en su proyecto si aún no lo ha hecho: npm init
  • Instale GraphQL.js desde npm: npm install --save graphql

Servidor de ejemplo

var { graphql, buildSchema } = require('graphql');

// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// The root provides a resolver function for each API endpoint
var root = {
  hello: () => {
    return 'Hello world!';
  },
};

// Run the GraphQL query '{ hello }' and print out the response
graphql(schema, '{ hello }', root).then((response) => {
  console.log(response);
});

Alternativas de middleware de servidor

Lenguaje de consulta GraphQL (GQL)

En lugar de definir los puntos finales de URL para cada recurso de datos, en GraphQL se define un solo punto final que acepta consultas GraphQL. A diferencia de los lenguajes de consulta de base de datos tradicionales, GraphQL Query Language (GQL) es una proyección de datos devueltos por una consulta de nivel raíz. El esquema GraphQL definirá el modelo de datos y las consultas y mutaciones a nivel raíz. GQL ejecuta esas consultas y define qué datos devolver.

Consulta de todos los títulos de películas del esquema de Star Wars

Consulta de datos de Star Wars para allFilms con una proyección de solo el título Consulta GraphiQL

Consulta para los residentes del planeta a la película de Star Wars "Una nueva esperanza"

introduzca la descripción de la imagen aquí Consulta GraphiQL

Observe cómo la film() consulta raíz film() toma el parámetro id de la película "A New Hope" y la proyección de GQL devuelve el título, los planetas conectados a la película y luego los nombres residentes de los planetas. Visite el sitio de Star Wars GraphiQL para experimentar con la consulta en GraphQL.

Definición de esquema

En GraphQL, el esquema define las consultas de ejecución raíz y las mutaciones , así como los tipos para sus datos.

Tipo de objeto de esquema

El tipo de Person tiene dos campos, uno es un tipo escalar estándar y el otro representa una relación con una lista de otros tipos de personas que son "amigos". Vincular otros tipos es lo que hace a GraphQL tan poderoso. Ahora en GraphQL Query Language (GQL), el cliente puede recorrer el gráfico de amigos sin ningún código adicional o consulta avanzada.

type Person {
  id: ID
  name: String
  friends: [Person]
}

Consulta de esquema

La consulta de person busca una sola persona por su id. Este es el punto de entrada a sus datos para clientes que utilizan GQL.

type Query {   
  person(id: ID!): Person
}

Los amigos de Query Nick's Friend

Ahora que tenemos un tipo de persona y una consulta de raíz de persona, podemos buscar una persona y tantos grados de separación queremos de la red de amigos de la persona.

query {
  person(id: 'nick'){
    id
    name
    friends{
      id
      name
      friends{
        id
        name
        friends{
          id
          name
        }
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow