Crear una API
Crear una APICreando un endpoint personalizado

Creando un endpoint personalizado

Además del endpoint único, Gato GraphQL también soporta endpoints personalizados, para recuperar y publicar datos para un esquema personalizado (que contiene solo un subconjunto de los tipos disponibles) y reglas de validación de usuario, con el fin de atender las necesidades de distintos usuarios y aplicaciones.

Podemos crear tantos endpoints personalizados como necesitemos.

Por ejemplo, podemos crear un endpoint personalizado para:

  • Algún cliente o usuario específico, en /graphql/my-client/
  • Un grupo de usuarios con más acceso a funcionalidades (como usuarios PRO), en /graphql/pro-users/
  • Proporcionar datos a nuestra app móvil, en /graphql/mobile-app/
  • Dar acceso a alguna API de terceros, en /graphql/external-api/
  • Otros

Editor de Endpoint Personalizado

Ejecutando el endpoint personalizado en una aplicación

Por favor, sigue las instrucciones en la guía Conectando con el servidor GraphQL desde un cliente.

Accediendo a todos los endpoints personalizados

Al hacer clic en "Custom Endpoints" en el menú del plugin, se muestra la lista de todos los endpoints personalizados creados:

Endpoints Personalizados en el admin
Endpoints Personalizados en el admin

Creando un nuevo endpoint personalizado

Haz clic en el botón "Add New GraphQL endpoint" para abrir el editor de WordPress:

Creando un nuevo Endpoint Personalizado

Asígnale un título, asegúrate de que el permalink es el deseado, selecciona la configuración del esquema y ajusta las opciones. Cuando esté listo, haz clic en el botón Publicar, y el endpoint personalizado se crea, usando el permalink configurado como URL del endpoint.

Los enlaces al endpoint (y al código fuente y clientes) se muestran en el panel lateral "Custom Endpoint Overview":

Custom Endpoint Overview

Configuración del esquema

Definir qué elementos contiene el esquema, y qué acceso tendrán los usuarios al mismo, se define en la configuración del esquema.

Por tanto, debemos crear una configuración del esquema, y luego seleccionarla desde el desplegable (o no usar ninguna, o usar la predeterminada):

Seleccionando la configuración del esquema

Endpoints privados

Estableciendo el estado del Endpoint Personalizado como privado, solo el usuario administrador puede acceder al endpoint. Esto evita que nuestros datos se compartan involuntariamente con usuarios que no deberían tener acceso a ellos.

Por ejemplo, podemos crear Endpoints Personalizados privados que ayuden a gestionar la aplicación, como recuperar datos para crear informes con nuestras métricas.

Endpoint Personalizado Privado

Endpoints protegidos por contraseña

Si creamos un Endpoint Personalizado para un cliente específico, podemos asignarle una contraseña, para proporcionar un nivel adicional de seguridad de modo que solo ese cliente acceda al endpoint.

Endpoint Personalizado protegido por contraseña

Al acceder por primera vez a un endpoint protegido por contraseña (ya sea accediendo al endpoint directamente, o a sus clientes GraphiQL o Interactive Schema), nos encontramos con una pantalla que solicita la contraseña:

Endpoint Personalizado protegido por contraseña: primer acceso

Una vez que se proporciona y valida la contraseña, solo entonces el usuario accederá al endpoint o cliente deseado:

Endpoint Personalizado protegido por contraseña: tras la autorización

Creando una jerarquía de endpoints

Por favor, lee las instrucciones sobre crear una jerarquía de API.

Deshabilitando el endpoint personalizado

En las opciones, establece "Enabled" en false para deshabilitar el endpoint personalizado.

Esta característica puede ser útil cuando se hace que el endpoint personalizado forme parte de una jerarquía de API, para proporcionar un comportamiento común a sus endpoints personalizados hijos, pero sin necesidad de que él mismo se ejecute.

Describiendo el endpoint personalizado

Usa el campo "Extracto", del panel de ajustes del documento, para dar una descripción al endpoint personalizado.

Encuentra más información en la guía Añadiendo una descripción a la API.

Clientes del endpoint

Cada endpoint personalizado tiene su propio conjunto de clientes con los que interactuar.

Cliente GraphiQL

Añade ?view=graphiql al endpoint para acceder a su cliente GraphiQL:

Cliente GraphiQL del endpoint personalizado

El cliente GraphiQL también puede abrirse al editar el Endpoint Personalizado, bajo el panel lateral "Custom Endpoint Overview":

Enlace al cliente GraphiQL del endpoint personalizado en el editor

Del mismo modo, el cliente puede abrirse desde la página del listado de Endpoints Personalizados, en el enlace "GraphiQL" al pasar el cursor sobre la entrada:

Enlace al cliente GraphiQL del endpoint personalizado en el listado
Enlace al cliente GraphiQL del endpoint personalizado en el listado

Para deshabilitar el cliente GraphiQL, establece la opción "Expose GraphiQL client?" en false en el editor del Endpoint Personalizado.

Cliente Interactive Schema (Voyager)

Añade ?view=schema al endpoint para acceder a su cliente Interactive Schema, para visualizar e interactuar con el esquema del endpoint:

Cliente Voyager del endpoint personalizado

El cliente Interactive Schema también puede abrirse al editar el Endpoint Personalizado, bajo el panel lateral "Custom Endpoint Overview":

Enlace al cliente Interactive Schema del endpoint personalizado en el editor

Del mismo modo, el cliente puede abrirse desde la página del listado de Endpoints Personalizados, en el enlace "Interactive Schema" al pasar el cursor sobre la entrada:

Enlace al cliente Interactive Schema del endpoint personalizado en el listado
Enlace al cliente Interactive Schema del endpoint personalizado en el listado

Para deshabilitar el cliente Interactive Schema, establece la opción "Expose the Interactive Schema client?" en false en el editor del Endpoint Personalizado.

Probando el endpoint antes de publicarlo en línea

Un endpoint personalizado con estado borrador o pendiente está disponible solo para los usuarios editores del esquema. Esto les da la capacidad de:

  • Ejecutar consultas GraphQL contra él
  • Acceder a los clientes GraphiQL y Voyager del endpoint

Entonces, podemos crear un endpoint personalizado, asignarle una Configuración del Esquema, publicarlo como borrador o pendiente, y probarlo (por ejemplo: comprobando que sus reglas de Control de Acceso son apropiadas).

Una vez aprobado, solo entonces establecemos su estado como publicado, haciendo el endpoint personalizado disponible para todo el mundo.

Viendo el código fuente

Añadiendo ?view=source al endpoint, mostrará la configuración del endpoint (siempre que el usuario esté autenticado y el rol de usuario tenga acceso a ella):

Código fuente del endpoint personalizado


Configuración en el editor de WordPress

Estas son las entradas en el cuerpo del editor:

EntradaDescripción
TítuloTítulo del endpoint personalizado
Configuración del esquemaDesde el desplegable, selecciona la configuración del esquema que se aplica al endpoint personalizado, o una de estas opciones:
  • "Default": la configuración del esquema es la seleccionada en los Ajustes del plugin
  • "None": el endpoint personalizado no tendrá restricciones
  • "Inherit from parent": usar la misma configuración del esquema que el endpoint personalizado padre.
    Esta opción está disponible cuando el módulo "API Hierarchy" está habilitado, y el endpoint personalizado tiene una consulta padre (seleccionada en los ajustes del documento)
OpcionesPersonaliza el comportamiento del endpoint personalizado:
  • Enabled?: si el endpoint personalizado está habilitado.
    Es útil deshabilitar un endpoint personalizado si es una consulta padre en una jerarquía de API
  • Expose GraphiQL client?: habilitar/deshabilitar el cliente GraphiQL adjunto al endpoint, accesible bajo ?view=graphiql
  • Expose the Interactive Schema client?: habilitar/deshabilitar el cliente Interactive Schema adjunto al endpoint, accesible bajo ?view=schema
  • Inherit query from ancestor(s)?: usar la misma consulta que el endpoint personalizado padre.
    Esta opción está disponible cuando el módulo "API Hierarchy" está habilitado, y el endpoint personalizado tiene una consulta padre (seleccionada en los ajustes del documento)

Estas son las entradas en los ajustes del documento:

EntradaDescripción
PermalinkEl endpoint bajo el cual estará disponible el endpoint personalizado
CategoríasPermite categorizar el endpoint personalizado.
Ej.: mobile, app, etc
ExtractoProporciona una descripción para el endpoint personalizado.
Esta entrada está disponible cuando el módulo "Excerpt as Description" está habilitado
Atributos de páginaSelecciona un endpoint personalizado padre.
Esta entrada está disponible cuando el módulo "API Hierarchy" está habilitado