Saltearse al contenido

GraphQL Query

Este modulo extiende la funcionalidad del modulo GraphQL basico anadiendo soporte para paginacion automatica basada en cursores. Permite ejecutar consultas GraphQL contra cualquier endpoint, y si se configuran los parametros edgePath y pageInfoPath, recorre automaticamente todas las paginas de resultados usando el patron de paginacion relay (edges/nodes con cursor).

El modulo itera hasta que hasNextPage sea false o se alcance el limite de paginas configurado (maxPages). En cada iteracion, envia la variable after con el cursor de la pagina anterior. Utiliza lodash para extraer los datos de respuesta segun las rutas configuradas.

ParametroTipoRequeridoDescripcion
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 sesion 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)
maxPagesnumberNoNumero maximo de paginas 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 sesion 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 basico - Consulta simple (sin paginacion)

Sección titulada «Caso basico - Consulta simple (sin paginacion)»
{
"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 paginacion
  • El patron de paginacion soportado es relay (edges/nodes con cursor)
  • La variable after se inyecta automaticamente en las variables de la consulta
  • El limite por defecto es 20 paginas para evitar bucles infinitos
  • Los nodos se extraen automaticamente de edge.node
  • Los resultados paginados se acumulan en un array unico
  • Utiliza lodash (_.get) para extraer datos de rutas anidadas
  • Utiliza node-fetch para las solicitudes HTTP
  • graphql (version sin paginacion)