HTTP
HTTP
El módulo HTTP es responsable de realizar solicitudes a APIs externas y de configurar clientes de API reutilizables, con certificado de cliente (mTLS), URL base, encabezados predeterminados y autenticación OAuth2. Sus métodos pueden accederse conforme al ejemplo abajo:
const apiClient = await API.apiClientCreate["v1_0_0"]({
baseURL: "https://api.ejemplo.com",
});
Métodos
apiClientCreate
Método responsable de configurar un cliente de API reutilizable. El cliente devuelto se indica en el parámetro apiClient del método apiRequest, que pasa a usar su configuración sin necesidad de repetirla en cada solicitud.
const apiClient = await API.apiClientCreate["v1_0_0"]({
pfxPath: "C:\\Certificados\\cliente.pfx",
passphrase: "contraseña-del-certificado",
caPath: "C:\\Certificados\\ca.pem",
baseURL: "https://api.ejemplo.com",
headers: {
"Accept": "application/json",
},
auth: {
tokenUrl: "https://auth.ejemplo.com/oauth/token",
clientId: "mi-client-id",
clientSecret: "mi-client-secret",
scope: "lectura escritura",
credentialsIn: "basic",
},
});
Parámetros obligatorios
Este método no tiene parámetros obligatorios. Indica solo los grupos de configuración que la API exige.
Parámetros opcionales
pfxPath:String - espera la ruta del archivo del certificado de cliente en el formato PKCS#12 (.pfxo.p12), usado en las solicitudes con TLS mutuo (mTLS). El archivo debe existir en el dispositivo que ejecuta el robot.passphrase:String - espera la contraseña que protege el archivo del certificado.caPath:String - espera la ruta del archivo de la autoridad certificadora (CA) que debe aceptarse como confiable al validar el certificado del servidor. Solo se usa junto conpfxPath.baseURL:String - espera la URL base de la API. Cuando se indica, elurlde las solicitudes hechas con este cliente puede ser una ruta relativa (ej.:/clientes).headers:Object - espera un objeto con encabezados enviados en todas las solicitudes hechas con este cliente.auth:Object - configura la autenticación OAuth2 con el flujo client credentials. Cuando se indica, el robot obtiene el token de acceso y lo envía en el encabezadoAuthorizationde las solicitudes. Propiedades:tokenUrl:String (obligatorio) - dirección que emite el token de acceso.clientId:String (obligatorio) - identificador del cliente.clientSecret:String (obligatorio) - secreto del cliente.scope:String - alcances solicitados, separados por espacio.audience:String - audiencia (audience) del token, cuando la API lo exige.credentialsIn:String - espera"basic"(las credenciales van en el encabezadoAuthorizationde la solicitud del token) o"body"(van en el cuerpo, comoclient_idyclient_secret). Cuando no se indica, las credenciales van en el encabezado.
Retorno
Devuelve el objeto del cliente de API, que debe almacenarse en una variable (ej.: apiClient) e indicarse en el parámetro apiClient del método apiRequest. Cuando se indica auth, el objeto también guarda el token obtenido (accessToken, tokenType y expiresAt), reutilizado por las solicitudes siguientes.
El método valida la configuración en el momento: si el certificado no puede leerse, la contraseña es incorrecta o el token no puede obtenerse, el robot interrumpe la ejecución con error ya en este método, y no solo en la primera solicitud.
apiRequest
Método responsable de realizar una solicitud HTTP a una API.
const apiResponse = await API.apiRequest["v2_0_0"]({
url: "/clientes",
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: {
nombre: "Juan",
},
apiClient: apiClient,
});
Parámetros obligatorios
url:String - espera la dirección de la solicitud. Cuando elapiClienttienebaseURL, puede ser una ruta relativa.method:String - espera"GET","POST","PUT","DELETE","OPTIONS","PATCH","HEAD","CONNECT"o"TRACE".
Parámetros opcionales
headers:Object - espera un objeto con los encabezados de la solicitud. Cuando se usa conapiClient, los encabezados indicados aquí prevalecen sobre los del cliente y sobre elAuthorizationgenerado por el token.body:Any - espera el cuerpo de la solicitud.apiClient:Object - espera el cliente de API devuelto por el método apiClientCreate. Cuando se indica, la solicitud usa el certificado, la URL base, los encabezados predeterminados y el token del cliente. Si la API responde con status401, el robot obtiene un nuevo token y repite la solicitud una vez.
Retorno
actions.apiResponse.status // código de status HTTP de la respuesta (Number)
actions.apiResponse.statusText // texto del status HTTP de la respuesta (String)
actions.apiResponse.response // cuerpo de la respuesta (Any)
Cuando la API responde con un status de error, el método rechaza la promesa con un objeto que tiene las mismas propiedades status, statusText y response. Si no hay respuesta (falla de red), status es 0 y statusText es "Network Error".
La versión v1_0_0 de este método acepta solo url, method, headers y body, y devuelve solo response.