Introducción a GraphQL y Gato GraphQL
Te damos la bienvenida a las guías de Gato GraphQL. Aquí encontrarás abundante información sobre cómo instalar, configurar y usar el plugin Gato GraphQL en tu sitio WordPress.
Qué es GraphQL
GraphQL es una especificación de API que permite a los clientes (como una web en el navegador o una aplicación móvil) especificar exactamente qué datos necesitan, y el servidor que implementa la API recuperará exactamente eso.
Una consulta GraphQL tiene este aspecto:
query {
posts {
id
title
content
author {
id
name
}
}
}La respuesta del servidor está en formato JSON, conteniendo los datos con la misma forma que la consulta. Tiene este aspecto:
{
"data": {
"posts": [
{
"id": 1,
"title": "Hello world",
"content": "<p>How are you doing?</p>",
"author": {
"id": 1,
"name": "Leo"
}
},
{
"id": 2,
"title": "Scheduled post",
"content": "<p>This post is scheduled to be published in the future.</p>",
"author": {
"id": 2,
"name": "Markus"
}
},
{
"id": 3,
"title": "Lorem ipsum",
"content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
"author": {
"id": 3,
"name": "Socrates"
}
}
]
}
}Los servidores GraphQL también pueden "mutar" (es decir, crear y actualizar) datos. En ese caso, la palabra clave de operación query debe sustituirse por mutation:
mutation {
createPost(input: {
title: "New post",
contentAs: { html: "Lorem ipsum dolor sit amet" }
}) {
id
status
}
}Echa un vistazo a la web oficial de GraphQL en graphql.org.
Qué es Gato GraphQL
Gato GraphQL es un plugin para WordPress que convierte el sitio en un servidor GraphQL, permitiéndote obtener y modificar datos del sitio WordPress utilizando el lenguaje GraphQL.
Gato GraphQL se esfuerza por ser:
Fácil de usar
La filosofía de WordPress es que cualquier persona, independientemente de si tiene conocimientos técnicos o no, debe poder usar el software. El plugin intenta cumplir con esta filosofía, facilitando al máximo la creación de una API e interactuar con ella.
Por ejemplo, Gato GraphQL permite publicar consultas persistidas (que son endpoints que exponen datos predefinidos, similares a endpoints REST) usando la interfaz de usuario proporcionada por el editor de WordPress; de forma similar a escribir una entrada, es accesible para todo el mundo.
Rápido
Resolver una consulta GraphQL normalmente requiere iterar un grafo que contiene los datos de todas las entidades consultadas. Cuantos más nodos haya en el grafo, y más profundidad tenga, más lento será este proceso (incluso exponencialmente más lento).
Gato GraphQL adopta un enfoque distinto: utiliza una estructura de modelo de componentes para resolver la consulta GraphQL (en lugar de un grafo), implicando un proceso que crece linealmente con la profundidad de la consulta (no exponencialmente).
Además, solo los elementos del esquema solicitados en la consulta GraphQL se compilan, validan y ejecutan, no todo el esquema GraphQL. Como resultado, tanto si tu sitio WordPress tiene 3 como 30 Custom Post Types instalados, el tiempo de resolución de la consulta será el mismo.
Potente
Las APIs actúan como la principal puerta de enlace para que el cliente interactúe con el servidor; es importante que una API no esté limitada en ningún aspecto, de modo que pueda satisfacer cualquier requisito.
Este plugin permite modificar los resultados de la ejecución de una consulta, mediante funcionalidad personalizada, APIs externas y servicios basados en la nube. Los datos consultados pueden iterarse y manipularse según sea necesario, y la salida de la consulta también puede alterarse de cualquier modo deseado, por lo que apenas hay algo que no pueda hacerse.
Seguro
Una API GraphQL podría gestionarse incorrectamente con facilidad, exponiendo el acceso a todos los datos del sitio WordPress a cualquier persona, incluidos actores maliciosos; el servidor GraphQL necesita proporcionar medidas de seguridad apropiadas, para asegurar que solo los usuarios previstos sean los que accedan a los datos.
Este plugin se toma la seguridad muy en serio, y ha implementado varias medidas de seguridad de forma nativa. El endpoint único puede deshabilitarse; los datos pueden exponerse mediante consultas persistidas; conceder acceso a los datos se hace mediante listas de control de acceso configurables (basadas en si el usuario está autenticado o no, si tiene cierto rol o capacidad, o una regla personalizada); y la API puede definirse como pública o privada.
Orientado al futuro
GraphQL es un estándar que sigue evolucionando, y la comunidad sigue sugiriendo ideas para proporcionar nuevas funcionalidades, que se añadirán a la especificación en algún momento del futuro.
A este plugin no le gusta esperar; ya incluye muchas de las nuevas funcionalidades que se han propuesto (como el namespacing del esquema, la ejecución de consultas múltiples y otras) como características opt-in, por lo que deben ser habilitadas explícitamente por el administrador.