Ir al contenido

GraphQL Query

Este modulo extiende la funcionalidad del modulo GraphQL básico anadiendo soporte para paginación automática basada en cursores. Permite ejecutar consultas GraphQL contra cualquier endpoint, y si se configuran los parámetros edgePath y pageInfoPath, recorre automáticamente todas las páginas de resultados usando el patron de paginación relay (edges/nodes con cursor).

El modulo itera hasta que hasNextPage sea false o se alcance el limite de páginas configurado (maxPages). En cada iteración, envia la variable after con el cursor de la página anterior. Utiliza lodash para extraer los datos de respuesta según las rutas configuradas.

ParámetroTipoRequeridoDescripción
credentials_idcredentialsSiCredenciales con usuario y contrasena para Basic Auth
endpointtextSiURL del endpoint GraphQL
querytextSiConsulta GraphQL con soporte para variable $after
variablesjsonNoVariables de la consulta GraphQL
xtremEndpointtextNoValor para cabecera x-xtrem-endpoint (default: DEV)
clientCookietextNoCookie de sesión del cliente
edgePathtextNoRuta en la respuesta donde se encuentran los edges (ej: repository.issues.edges). Si no se especifica, retorna la respuesta sin paginar
pageInfoPathtextNoRuta en la respuesta donde se encuentra pageInfo (ej: repository.issues.pageInfo)
maxPagesnumberNoNúmero máximo de páginas a recorrer (default: 20)

Las credenciales se obtienen del sistema de credenciales y deben contener:

  • username: Nombre de usuario para Basic Auth
  • password: Contrasena para Basic Auth
  • clientCookie: Cookie de sesión del cliente (opcional)
{
"nextModule": "siguiente_modulo",
"data": [
{ "id": "1", "title": "Issue 1", "state": "OPEN" },
{ "id": "2", "title": "Issue 2", "state": "CLOSED" }
]
}
{
"credentials_id": 1,
"endpoint": "https://api.ejemplo.com/graphql",
"query": "query($after: String) { repository(name: \"repo\") { issues(first: 100, after: $after) { edges { node { id title state } } pageInfo { hasNextPage endCursor } } } }",
"edgePath": "repository.issues.edges",
"pageInfoPath": "repository.issues.pageInfo",
"maxPages": 10
}

Caso básico - Consulta simple (sin paginación)

Sección titulada «Caso básico - Consulta simple (sin paginación)»
{
"credentials_id": 1,
"endpoint": "https://api.ejemplo.com/graphql",
"query": "query { user(id: 1) { name email } }"
}
  • Endpoint GraphQL configurado por el usuario
  • Protocolo: HTTP POST con Content-Type application/json
  • Si no se configuran edgePath y pageInfoPath, el modulo se comporta como una consulta simple sin paginación
  • El patron de paginación soportado es relay (edges/nodes con cursor)
  • La variable after se inyecta automáticamente en las variables de la consulta
  • El limite por defecto es 20 páginas para evitar bucles infinitos
  • Los nodos se extraen automáticamente de edge.node
  • Los resultados paginados se acumulan en un array único
  • Utiliza lodash (_.get) para extraer datos de rutas anidadas
  • Utiliza node-fetch para las solicitudes HTTP
  • graphql (versión sin paginación)