GraphQL Query
Descripcion
Sección titulada «Descripcion»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.
Configuracion
Sección titulada «Configuracion»| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| credentials_id | credentials | Si | Credenciales con usuario y contrasena para Basic Auth |
| endpoint | text | Si | URL del endpoint GraphQL |
| query | text | Si | Consulta GraphQL con soporte para variable $after |
| variables | json | No | Variables de la consulta GraphQL |
| xtremEndpoint | text | No | Valor para cabecera x-xtrem-endpoint (default: DEV) |
| clientCookie | text | No | Cookie de sesion del cliente |
| edgePath | text | No | Ruta en la respuesta donde se encuentran los edges (ej: repository.issues.edges). Si no se especifica, retorna la respuesta sin paginar |
| pageInfoPath | text | No | Ruta en la respuesta donde se encuentra pageInfo (ej: repository.issues.pageInfo) |
| maxPages | number | No | Numero maximo de paginas a recorrer (default: 20) |
Credenciales
Sección titulada «Credenciales»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" } ]}Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Caso basico - Consulta paginada
Sección titulada «Caso basico - Consulta paginada»{ "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 } }"}API Utilizada
Sección titulada «API Utilizada»- 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
afterse 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
Nodos Relacionados
Sección titulada «Nodos Relacionados»- graphql (version sin paginacion)