GraphQL Query
Descripción
Sección titulada «Descripción»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.
Configuración
Sección titulada «Configuración»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| 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 sesión 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 | Número máximo de páginas 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 sesión 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 básico - Consulta paginada
Sección titulada «Caso básico - 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 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 } }"}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 paginación
- El patron de paginación soportado es relay (edges/nodes con cursor)
- La variable
afterse 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
Nodos Relacionados
Sección titulada «Nodos Relacionados»- graphql (versión sin paginación)