Ir al contenido principal

Tu primera query

Si no has usado GraphQL antes, esta es la versión corta: describes la forma de la respuesta que quieres, y esa es la forma que recibes.

Pide un versículo​

query {
verse(translation: "spa-rv1909", book: "JHN", chapter: 3, verse: 16) {
bookName
chapter
verse
text
}
}

Fíjate en book: "JHN". El id canónico de tres letras funciona en todas las traducciones. Un nombre localizado como "Juan" también funciona, siempre que corresponda a la traducción que estás consultando.

Pide más campos​

Añadir campos es libre: nada llega si no lo pides, y nada se oculta si lo pides. Agregar bookId a la query anterior lo devuelve junto al resto; quitar text evita que se envíe el texto del versículo.

Esa es la diferencia práctica principal con una API REST: el tamaño de la respuesta lo decides tú, no el servidor.

Pide un capítulo completo​

query {
chapter(translation: "spa-rv1909", book: "JHN", chapter: 3) {
verse
text
}
}

chapter devuelve una lista de versículos. Todos los campos de lista del esquema se comportan igual: seleccionas los campos que quieres de cada elemento.

Anida a través de relaciones​

Los tipos se conectan entre sí, así que una petición puede recorrer varios niveles:

query {
translation(identifier: "spa-rv1909") {
name
books {
bookId
name
chapterCount
}
}
}

Eso devuelve la traducción y todos sus libros con su número de capítulos, en una sola ida y vuelta.

El anidamiento tiene límites

Las queries están limitadas a profundidad 15 y complejidad 300. Una query muy anidada — por ejemplo todos los capítulos y todos los versículos de todos los libros — será rechazada en lugar de servirse lentamente. Usa bibleIndex para la estructura y luego pide el texto que realmente necesites.

Usa variables en lugar de interpolar cadenas​

Cuando una query vive en el código de una aplicación, pasa los valores como variables en vez de construir el documento concatenando cadenas:

query GetPassage($translation: String!, $reference: String!) {
passage(translation: $translation, reference: $reference) {
reference
text
}
}
{
"translation": "spa-rv1909",
"reference": "Juan 3:16"
}

Envíalas en la clave variables, junto a query, en el cuerpo del POST. Así el documento queda estático y cacheable, y evitas errores de comillas.

Nombra tus operaciones​

query GetPassage(...) es una operación con nombre. Los nombres no cuestan nada y hacen que los logs del servidor y las herramientas de cliente sean mucho más legibles. Una query { ... } anónima está bien para explorar.

Siguiente​