graphql Tutorial
Empezando con graphql
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
- GraphQL.js
- graphql-ruby
- Grafeno (Python)
- Sangria (Scala)
- Graphql-java
- graphql-clj (Clojure)
- Graphql-go
- graphql-php
- graphql-dotnet (C # / .Net)
- absenta (elixir)
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
- graphiql / ˈɡrafək (ə) l / - Un IDE de GraphQL interactivo en el navegador.
- libgraphqlparser - Un analizador de lenguaje de consulta GraphQL en C ++ con API de C y C ++.
- GraphQL Language Service : una interfaz para crear servicios de lenguaje GraphQL para IDE (diagnósticos, autocompletado, etc.).
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 para los residentes del planeta a la película de Star Wars "Una nueva esperanza"
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
}
}
}
}
}