Comenzando con graphql
- Lenguaje de consulta GraphQL (GQL)
- Consulta de todos los títulos de películas del esquema de Star Wars
- Consulta de residentes del planeta para la película de Star Wars “Una nueva esperanza”
- Definición de esquema
- Tipo de objeto de esquema
- Consulta de esquema
- Consulta a los amigos de los amigos de los amigos de Nick
- Instalación e implementación del servidor
- GraphQL.js
En esta página
- Lenguaje de consulta GraphQL (GQL)
- Consulta de todos los títulos de películas del esquema de Star Wars
- Consulta de residentes del planeta para la película de Star Wars “Una nueva esperanza”
- Definición de esquema
- Tipo de objeto de esquema
- Consulta de esquema
- Consulta a los amigos de los amigos de los amigos de Nick
- Instalación e implementación del servidor
- GraphQL.js
Lenguaje de consulta GraphQL (GQL)
En lugar de definir puntos finales de URL para cada recurso de datos, en GraphQL define un único punto final que acepta consultas GraphQL. A diferencia de los lenguajes de consulta de bases de datos tradicionales, GraphQL Query Language (GQL) es una proyección de datos devueltos por una consulta de nivel raíz. El esquema de GraphQL definirá el modelo de datos y las consultas y mutaciones de 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 residentes del planeta para la película de Star Wars “Una nueva esperanza”
Observe cómo la 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 [Star Wars GraphiQL][6] para experimentar con consultas en GraphQL.
3: http://graphql.org/swapi-graphql/?query=query%7B%0A%20%20allFilms%7B%0A%20%20%20%20films%7B%0A%20%20%20 %20%20%20título%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D 4: https://i.stack.imgur.com/bbCAW.png [5]: http://graphql.org/swapi-graphql/?query=query%7B%0A%20%20film(id%3A%20%22ZmlsbXM6MQ%3D%3D%22)%7B%0A%20% 20%20%20id%0A%20%20%20%20title%2C%0A%20%20%20%20planetaConexión%7B%0A%20%20%20%20%20%20planetas%7B%0A%20% 20%20%20%20%20%20%20nombre%0A%20%20%20%20%20%20%20%20residenteConexión%7B%0A%20%20%20%20%20%20%20% 20%20%20residentes%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20nombre%0A%20%20%20%20%20%20%20% 20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20% 20%20%7D%0A%20%20%7D%0A%7D [6]: http://graphql.org/swapi-graphql/
Definición de esquema
En GraphQL, el esquema define la ejecución raíz consultas y mutaciones, así como los tipos para sus datos.
Tipo de objeto de esquema
El tipo ‘Persona’ tiene dos campos, uno es un tipo Escalar estándar y el otro representa una relación con una lista de otros tipos de Persona que son ‘amigos’. Vincular otros tipos es lo que hace que GraphQL sea tan poderoso. Ahora, en GraphQL Query Language (GQL), el cliente puede recorrer el gráfico de amigos sin ningún código adicional ni consultas avanzadas.
type Person {
id: ID
name: String
friends: [Person]
}
Consulta de esquema
La consulta persona
busca a una sola persona por su id. Este es el punto de entrada a sus datos para los clientes que usan GQL.
type Query {
person(id: ID!): Person
}
Consulta a los amigos de los amigos de los amigos de Nick
Ahora que tenemos un tipo de persona y una consulta raíz de persona, podemos buscar una persona y tantos grados de separación como queramos de la red de amigos de la persona.
query {
person(id: 'nick'){
id
name
friends{
id
name
friends{
id
name
friends{
id
name
}
}
}
}
}
Instalación e implementación del servidor
GraphQL.js
GraphQL.js es una implementación de referencia de JavaScript para GraphQL. Puede instalarlo a través de 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);
});