APIs para WordPress

Gato GraphQL vs WP REST API

Comparación entre Gato GraphQL y la WP REST API

Gato GraphQL vs WP REST API
plus image
Gato GraphQL vs WP REST API

Las diferencias entre las APIs REST y GraphQL son por lo general válidas al contrastar la WP REST API con Gato GraphQL.

Con GraphQL puedes ejecutar una consulta GraphQL a medida contra un endpoint, indicando qué datos específicos necesitas, y obteniendo únicamente esos datos en una sola petición.

Por ejemplo, la siguiente consulta GraphQL obtendrá los datos requeridos para una entrada concreta, incluyendo los datos de sus relaciones (autor, categorías y etiquetas), todo en una sola petición:

query {
  post(by: { id: 1 }) {
    title
    content
    url
    date
    author {
      id
      name
    }
    categories {
      id
      name
    }
    tags {
      id
      name
    }
  }
}

Para obtener los mismos datos con REST, es posible que necesites ejecutar primero una petición para recuperar los datos de la entrada, y luego una petición adicional para cada una de sus relaciones (autor, categorías y etiquetas) para obtener sus datos.

Estas diferencias arquitectónicas entre REST y GraphQL se han tratado ampliamente en otros lugares, así que no las repetiremos aquí.

A continuación, hagamos una comparación más concreta entre Gato GraphQL + todas las extensiones, y la WP REST API.

Tabla resumen

CaracterísticaGato GraphQLWP REST API
Obtención de datosEjecuta consultas GraphQL a medida contra un endpoint, obteniendo datos específicos en una sola petición.Requiere múltiples peticiones a diferentes endpoints para obtener datos relacionados (p. ej., datos de entradas, autor, categorías y etiquetas).
EndpointsSoporta Persisted queries, que son endpoints con datos predefinidos creados utilizando el lenguaje GraphQL mediante una interfaz dentro del wp-admin, sin necesidad de desplegar código.Expone los datos mediante endpoints REST, cada uno con su propia URL y datos predefinidos, creados con código PHP y desplegados dentro de un tema o plugin.
Control de accesoOfrece flexibilidad con control de acceso a nivel de campo basado en reglas (p. ej., roles de usuario, capabilities, rango de IP).Restringe los datos según el parámetro context (p. ej., view para usuarios no autenticados, edit para usuarios autenticados con los permisos adecuados).
Operaciones en loteSoporta Ejecución de múltiples consultas, donde un único documento GraphQL puede ejecutar múltiples operaciones que pueden compartir estado mediante la directiva @export, mejorando las batch requests.Permite batch requests, donde múltiples peticiones se resuelven internamente dentro de una sola petición HTTP.
Gestión del sitioPuede obtener datos, modificarlos y almacenarlos de vuelta dentro de un único documento GraphQL mediante interfaces de usuario, permitiendo la automatización y gestión de sitios WordPress. Puede realizar tareas de múltiples plugins como duplicar, automatizar, hacer copias de seguridad, buscar/reemplazar, webhooks y traducir. Es una API y mucho más.Principalmente una API para acceder y manipular datos de WordPress.
GeneralidadUna herramienta genérica para gestionar sitios WordPress, capaz de mutar datos e integrarse con servicios de terceros mediante consultas GraphQL.Centrada en proporcionar una API; requiere plugins adicionales o código personalizado para lograr funcionalidades similares.

Resumen de puntos clave:

  • Obtención de datos: Gato GraphQL utiliza consultas a medida, mientras que la WP REST API utiliza múltiples peticiones a endpoints.
  • Endpoints: Gato GraphQL utiliza persisted queries creadas mediante una UI, mientras que la WP REST API utiliza endpoints REST programados en PHP.
  • Control de acceso: Gato GraphQL ofrece control a nivel de campo, mientras que la WP REST API utiliza el parámetro context.
  • Operaciones en lote: Gato GraphQL utiliza Multiple Query Execution, y la WP REST API utiliza batch requests.
  • Gestión del sitio: Gato GraphQL es una herramienta integral, y la WP REST API es principalmente una API.

Acceso a datos predefinidos

Con la WP REST API, expones los datos mediante endpoints REST. Cada endpoint tiene su propia URL, y sus datos están predefinidos (para los recursos correspondientes, como entradas o usuarios).

De forma similar a los endpoints REST, Gato GraphQL soporta Persisted queries, que también son endpoints con datos predefinidos. Solicitar una persisted query mediante GET ejecutará la consulta GraphQL almacenada, y producirá la respuesta JSON esperada:

Ejecutando una persisted query en el navegador
Ejecutando una persisted query en el navegador

La diferencia entre ellos es que mientras los endpoints de la REST API se crean mediante código PHP, y deben desplegarse dentro de un tema o plugin, las persisted queries de Gato GraphQL se crean utilizando el lenguaje GraphQL, y se publican mediante una interfaz de usuario (basada en el editor de WordPress) dentro del wp-admin, sin necesidad de desplegar ningún código.

Editor de persisted queries
Editor de persisted queries

Los mismos mecanismos de caché pueden aplicarse tanto a los endpoints REST como a las persisted queries de GraphQL. Como la persisted query se accede bajo su propio endpoint, su respuesta puede cachearse utilizando el Caché HTTP estándar (PRO).

Control de acceso

Restringir los datos en la WP REST API depende del parámetro context. Pasar ?context=view produce datos para usuarios no autenticados, y ?context=edit incluye datos adicionales para usuarios autenticados (con los permisos adecuados), como el campo content.raw de la entrada.

Gato GraphQL proporciona mucha más flexibilidad, ya que cada campo puede ser accesible o no según las reglas de Control de Acceso. Puedes validar que sólo usuarios autenticados, o usuarios con un determinado rol o capability, o visitantes de un determinado rango de IP, puedan acceder a un campo concreto (PRO).

Editor de la Access Control List
Editor de la Access Control List

Operaciones en lote

La WP REST API permite ejecutar batch requests, donde múltiples peticiones se resuelven internamente dentro de una sola petición HTTP.

Gato GraphQL proporciona Ejecución de múltiples consultas, donde un único documento GraphQL puede ejecutar múltiples operaciones.

Multiple Query Execution es una mejora sobre las batch requests, ya que las operaciones pueden compartir estado entre sí mediante la directiva @export.

Por ejemplo, para duplicar una entrada, tenemos una operación query que obtiene los datos de la entrada, y pasa esos datos a una operación mutation que crea una nueva entrada con ellos:

query GetPostAndExportData($postId: ID!)
{
  post(by: { id: $postId }, status: any) {
    author {
      id @export(as: "authorID")
    }
    categories {
      id @export(as: "categoryIDs", type: LIST)
    }
    rawContent @export(as: "rawContent")
    rawExcerpt @export(as: "excerpt")
    featuredImage {
      id @export(as: "featuredImageID")
    }
    tags {
      id @export(as: "tagIDs", type: LIST)
    }
    rawTitle @export(as: "title")
  }
}
 
mutation DuplicatePost
  @depends(on: "GetPostAndExportData")
{
  createPost(input: {
    status: draft,
    authorBy: {
      id: $authorID
    },
    categoriesBy: {
      ids: $categoryIDs
    },
    contentAs: {
      html: $rawContent
    },
    excerpt: $excerpt
    featuredImageBy: {
      id: $featuredImageID
    },
    tagsBy: {
      ids: $tagIDs
    },
    title: $title
  }) {
    postID
  }
}

Gestión del sitio WordPress

Gato GraphQL nos permite obtener datos de la base de datos, modificarlos según se requiera, y almacenarlos de vuelta, todo ello dentro de un único documento GraphQL.

Esto se consigue mediante interfaces de usuario, para componer y publicar las consultas GraphQL, configurar los endpoints según sea necesario, y automatizar la ejecución de una consulta cuando ocurra algún evento.

Todo esto significa que Gato GraphQL es una herramienta genérica para gestionar nuestros sitios WordPress, satisfaciendo aquellos casos de uso donde los datos (ya sean del sitio WordPress, o proporcionados por servicios de terceros) deben ser mutados, ya que esto puede lograrse ejecutando alguna consulta GraphQL.

Fíjate en cómo Gato GraphQL puede ofrecer la funcionalidad de múltiples plugins:

La WP REST API es simplemente eso, una API.

Gato GraphQL también es una API, pero además mucho más.

Suscríbete a nuestra newsletter

Mantente al tanto de todas las novedades de Gato GraphQL.