En este artículo, abordaremos un problema relacionado con la utilización de la API de Apache NiFi desde una aplicación Node.js mediante Axios, el cual devuelve un error 400 (solicitud inválida), mientras que la misma solicitud funciona correctamente al utilizar herramientas como cURL o Postman.
Descripción del Problema
Al intentar realizar una solicitud POST a la API de obtención de tokens de Apache NiFi utilizando el paquete Axios en Node.js, el usuario recibe una respuesta de error 400, indicando que la solicitud es inválida. La configuración de la solicitud en Node.js fue similar a la utilizada en Postman, donde los parámetros username
y password
se envían como datos codificados en application/x-www-form-urlencoded
.
Código Prueba en Node.js
El fragmento de código que se proporcionó para realizar la solicitud es el siguiente:
// npm i --save axios qs
const axios = require('axios');
const qs = require('qs');
const https = require('https');
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
let data = qs.stringify({
'username': '420b5294-db73-4a20-9bd2-c2fc99176115',
'password': 'EV6rc7kwWGFKmox7egM6VYkCS5Wht2ay'
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://127.0.0.1:8443/nifi-api/access/token',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: data,
httpsAgent: new https.Agent({
rejectUnauthorized: false // Ignorar certificado autofirmado
})
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Análisis de la Respuesta del Error
Se recibió la siguiente respuesta de error:
message: "Request failed with status code 400",
name: "AxiosError",
code: "ERR_BAD_REQUEST",
Solución Propuesta
El problema principal puede estar relacionado con la configuración de la URL utilizada en la solicitud. Es recomendable verificar lo siguiente:
-
URL Correcta: Asegúrese de que la URL ‘https://127.0.0.1:8443/nifi-api/access/token‘ es la correcta. Intente usar ‘https://localhost:8443/nifi-api/access/token‘, ya que esto a veces puede influir en cómo el servidor procesa la solicitud.
-
Headers Adicionales: Compare los encabezados que envía Postman y los que envía Axios. En ocasiones, otros encabezados, como cookies, pueden ser necesarios para la autenticación y el acceso.
-
Datos Enviados: Verifique que los datos (
username
ypassword
) están correctamente formateados y que se están enviando como se espera. Asegúrese de que no haya caracteres especiales que necesiten ser escapados. - Depuración Adicional: Para obtener más información sobre el error 400, considere activar el registro de depuración en Apache NiFi para ver más detalles sobre por qué se está rechazando la solicitud.
Conclusión
Es crucial hacer una revisión detallada de la solicitud Axios comparada con una solicitud exitosa de Postman o cURL. Generalmente, errores de solicitud 400 están afectados por diferencias en el formato de la solicitud o encabezados necesarios. Asegurarse de que todos los elementos estén alineados puede resolver el problema.