¿Quieres aprender a realizar peticiones POST en Node.js? Si es así, estás en el lugar correcto. En esta entrada de blog, te mostraré cómo usar el módulo http integrado y la popular librería axios para realizar peticiones POST en Node.js. Luego, usa Apidog para probar las peticiones POST con una interfaz visual y compártelas con tu equipo.
¿Qué es una petición HTTP POST en NodeJS?
Una petición HTTP POST en Node.js se utiliza para enviar datos a un servidor para crear o actualizar un recurso. Las peticiones POST se utilizan comúnmente al enviar datos de formularios, cargar archivos o enviar datos para ser almacenados en una base de datos.
En Node.js, puedes realizar una petición POST utilizando el módulo http integrado o una librería de terceros como Axios. Los datos que se enviarán con la petición se incluyen en el cuerpo de la petición. El servidor puede entonces acceder y procesar estos datos para realizar la acción deseada.
Node.js proporciona un modelo de E/S no bloqueante y basado en eventos que lo hace eficiente para manejar aplicaciones de uso intensivo de datos y en tiempo real. Su capacidad para manejar peticiones POST y procesar datos lo convierte en una opción popular para construir APIs web, aplicaciones de chat en tiempo real y otros tipos de aplicaciones del lado del servidor.

¿Cómo enviar una petición POST en Node.js?
Ahora, te mostraremos varios métodos para enviar y realizar peticiones POST en Node.js, incluyendo el Módulo HTTP y la librería Axios. Puedes elegir el enfoque que mejor se adapte a los requisitos y preferencias de tu proyecto.
1. Enviar una petición POST en Node.js usando el módulo http
Node.js se utiliza a menudo para crear servidores web, aplicaciones web y APIs web. Node.js también proporciona un módulo http integrado que te permite realizar peticiones y respuestas HTTP.
Para realizar una petición POST en Node.js utilizando el módulo http, debes seguir estos pasos:
- Importa el módulo
httputilizando la funciónrequire. - Crea un objeto
optionsque contenga la información sobre la petición POST, como el nombre de host, el puerto, la ruta, el método, las cabeceras y los datos. - Utiliza el método
http.requestpara crear un objeto de petición, pasando el objetooptionscomo primer argumento y una función de callback como segundo argumento. La función de callback se ejecutará cuando se reciba la respuesta, y tendrá un objetoresponsecomo su parámetro. - Utiliza el objeto
requestpara enviar los datos y finalizar la petición. El objetorequestes una instancia de la clasehttp.ClientRequest, que implementa la interfazWritableStream. Esto significa que puedes utilizar el objetorequestcomo un flujo de datos, y escribir datos en él utilizando el métodorequest.write. También puedes utilizar el métodorequest.endpara señalar el final de los datos y la petición. También puedes escuchar eventos comoerrorytimeouten el objetorequest, y manejarlos en consecuencia. - Utiliza el objeto
responsepara manejar los datos de la respuesta y las cabeceras. El objetoresponsees una instancia de la clasehttp.IncomingMessage, que implementa la interfazReadableStream. Esto significa que puedes utilizar el objetoresponsecomo un flujo de datos, y escuchar eventos comodata,endyerror. También puedes utilizar la propiedadresponse.statusCodepara obtener el código de estado de la respuesta, y la propiedadresponse.headerspara obtener las cabeceras de la respuesta. - Utiliza el método
response.onpara registrar listeners de eventos para el objetoresponse. Por ejemplo, puedes utilizar el métodoresponse.on('data', callback)para escuchar el eventodata, que se emitirá cuando se reciba un fragmento de datos. La función de callback tendrá un objetochunkcomo su parámetro, que es un buffer de datos. Puedes utilizar el métodochunk.toString()para convertir el buffer en una cadena, y añadirlo a una variable para almacenar todos los datos de la respuesta. También puedes utilizar el métodoresponse.on('end', callback)para escuchar el eventoend, que se emitirá cuando la respuesta esté completa. La función de callback no tendrá ningún parámetro, y puedes utilizarla para realizar cualquier acción final, como registrar o analizar los datos de la respuesta. También puedes utilizar el métodoresponse.on('error', callback)para escuchar el eventoerror, que se emitirá cuando se produzca un error durante la respuesta. La función de callback tendrá un objetoerrorcomo su parámetro, y puedes utilizarlo para manejar el error, como registrarlo o lanzarlo.
Aquí tienes un ejemplo de cómo realizar una petición POST en Node.js utilizando el módulo http:
// Importar el módulo http
const http = require('http');
// Crear un objeto options
const options = {
hostname: 'jsonplaceholder.typicode.com',
port: 80,
path: '/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Node.js'
}
};
// Crear un objeto data
const data = {
title: '¡Hola, mundo!',
body: 'Esta es una publicación de prueba',
userId: 1
};
// Convertir el objeto data a cadena
const dataString = JSON.stringify(data);
// Actualizar el objeto options con la longitud de los datos
options.headers['Content-Length'] = dataString.length;
// Crear un objeto request
const request = http.request(options, (response) => {
// Inicializar una variable para almacenar los datos de la respuesta
let data = '';
// Escuchar el evento data
response.on('data', (chunk) => {
// Añadir el fragmento a la variable data
data += chunk.toString();
});
// Escuchar el evento end
response.on('end', () => {
// Registrar el código de estado y las cabeceras
console.log(`Código de estado: ${response.statusCode}`);
console.log(`Cabeceras: ${JSON.stringify(response.headers)}`);
// Analizar los datos como JSON
const post = JSON.parse(data);
// Registrar la información de la publicación
console.log(`ID de la publicación: ${post.id}`);
console.log(`Título de la publicación: ${post.title}`);
console.log(`Cuerpo de la publicación: ${post.body}`);
console.log(`ID de usuario de la publicación: ${post.userId}`);
});
// Escuchar el evento error
response.on('error', (error) => {
// Lanzar el error
throw error;
});
});
// Escribir los datos en el objeto request
request.write(dataString);
// Finalizar el objeto request
request.end();
2. Realizar peticiones POST en Node.js usando la librería axios
El módulo http es un módulo de bajo nivel que proporciona funcionalidad básica para realizar peticiones y respuestas HTTP. Sin embargo, si quieres utilizar un módulo de nivel superior y más fácil de usar, puedes utilizar la librería axios. Axios es una librería popular y potente que te permite realizar peticiones HTTP y manejar respuestas utilizando promesas y sintaxis async/await. Axios también soporta características como interceptores, transformadores, timeouts, tokens de cancelación y más.
Para realizar una petición POST en Node.js utilizando la librería axios, debes seguir estos pasos:
- Instala la librería
axiosutilizando el comandonpm:npm install axios. - Importa la librería
axiosutilizando la funciónrequire. - Utiliza el método
axios.postpara realizar la petición POST, pasando la URL del recurso como primer argumento y el objeto de datos como segundo argumento. También puedes pasar un objetoconfigopcional como tercer argumento, que puede contener información sobre la petición POST, como las cabeceras, los parámetros, el timeout y más. El métodoaxios.postdevolverá una promesa, que se resolverá en un objetoresponseo se rechazará en un objetoerror. - Utiliza el método
catchpara manejar la promesa rechazada, pasando una función de callback como primer argumento. La función de callback tendrá un objetoerrorcomo su parámetro, que contiene el mensaje de error, el código, la petición y la respuesta. Puedes utilizar la propiedaderror.responsepara acceder al objeto de respuesta, y la propiedaderror.requestpara acceder al objeto de petición. - Alternativamente, puedes utilizar la sintaxis
async/awaitpara realizar la petición POST y manejar la respuesta. Para ello, necesitas utilizar la palabra claveasyncantes de la función que contiene la petición POST, y la palabra claveawaitantes del métodoaxios.post. Esto te permitirá escribir código asíncrono de forma síncrona, y asignar el objetoresponsea una variable. Puedes entonces utilizar el bloquetry/catchpara manejar cualquier error que pueda ocurrir durante la petición POST.
Aquí tienes un ejemplo de cómo realizar una petición POST en Node.js utilizando la librería axios:
// Importar la librería axios
const axios = require('axios');
// Crear un objeto data
const data = {
title: '¡Hola, mundo!',
body: 'Esta es una publicación de prueba',
userId: 1
};
// Realizar la petición POST utilizando el método then
axios.post('http://jsonplaceholder.typicode.com/posts', data, {
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Node.js'
}
}).then((response) => {
// Registrar el código de estado y las cabeceras
console.log(`Código de estado: ${response.status}`);
console.log(`Cabeceras: ${JSON.stringify(response.headers)}`);
// Registrar la información de la publicación
console.log(`ID de la publicación: ${response.data.id}`);
console.log(`Título de la publicación: ${response.data.title}`);
console.log(`Cuerpo de la publicación: ${response.data.body}`);
console.log(`ID de usuario de la publicación: ${response.data.userId}`);
}).catch((error) => {
// Registrar el mensaje de error y el código
console.log(`Mensaje de error: ${error.message}`);
console.log(`Código de error: ${error.code}`);
// Registrar el estado de la respuesta y los datos si están disponibles
if (error.response) {
console.log(`Estado de la respuesta: ${error.response.status}`);
console.log(`Datos de la respuesta: ${JSON.stringify(error.response.data)}`);
}
// Registrar el método de la petición y la ruta si están disponibles
if (error.request) {
console.log(`Método de la petición: ${error.request.method}`);
console.log(`Ruta de la petición: ${error.request.path}`);
}
});
// Realizar la petición POST utilizando la sintaxis async/await
async function createPost() {
try {
// Esperar la petición POST y asignar el objeto de respuesta a una variable
const response = await axios.post('http://jsonplaceholder.typicode.com/posts', data, {
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Node.js'
}
});
// Registrar el código de estado y las cabeceras
console.log(`Código de estado: ${response.status}`);
console.log(`Cabeceras: ${JSON.stringify(response.headers)}`);
// Registrar la información de la publicación
console.log(`ID de la publicación: ${response.data.id}`);
console.log(`Título de la publicación: ${response.data.title}`);
console.log(`Cuerpo de la publicación: ${response.data.body}`);
console.log(`ID de usuario de la publicación: ${response.data.userId}`);
} catch (error) {
// Registrar el mensaje de error y el código
console.log(`Mensaje de error: ${error.message}`);
console.log(`Código de error: ${error.code}`);
// Registrar el estado de la respuesta y los datos si están disponibles
if (error.response) {
console.log(`Estado de la respuesta: ${error.response.status}`);
console.log(`Datos de la respuesta: ${JSON.stringify(error.response.data)}`);
}
// Registrar el método de la petición y la ruta si están disponibles
if (error.request) {
console.log(`Método de la petición: ${error.request.method}`);
console.log(`Ruta de la petición: ${error.request.path}`);
}
}
}
// Llamar a la función createPost
createPost();
3. Enviar y recibir datos en Node.js
Enviar y recibir datos en Node.js implica algunos pasos clave. Cuando envías una petición POST en Node.js, normalmente quieres enviar algunos datos al servidor web y recibir una respuesta. Por ejemplo, podrías querer enviar información de usuario para crear una nueva cuenta y recibir un mensaje de confirmación o un token. O, podrías enviar datos de archivo para subir un archivo y obtener una URL de archivo o un mensaje de estado.
Para manejar diferentes tipos de datos, necesitarás diferentes métodos y módulos:
- Datos JSON: Si tus datos son un objeto o array simple, puedes convertirlos a una cadena JSON usando
JSON.stringify(). Este método crea una cadena con pares clave-valor y arrays, facilitando el envío y la recepción de datos. Para trabajar con respuestas JSON, puedes usarJSON.parse()para convertir la respuesta de nuevo en un objeto o array de JavaScript. - Datos de archivo: Cuando trabajas con archivos, puedes usar la librería
form-datapara crear un objeto de datos de formulario y añadir el archivo a él. Esta librería imita el comportamiento de los formularios HTML, permitiéndote enviar texto y datos de archivo. Necesitarás instalar la libreríaform-datacon npm y luego usarla para crear y enviar el objeto de datos de formulario. - Streams: Para el streaming de datos, puedes usar el módulo
streamintegrado. Los streams te permiten manejar datos grandes o continuos sin cargarlos todos en la memoria.
Puedes crear streams legibles, escribibles o de transformación dependiendo de tus necesidades. Los streams son útiles para manejar audio, vídeo o datos de red, y puedes canalizar datos de un stream a otro para procesarlos o enviarlos al servidor.
4. Usar Apidog para probar tu petición POST de NodeJs
Apidog es una herramienta poderosa para probar APIs. Te permite crear y guardar peticiones de API, organizarlas en colecciones y compartirlas con tu equipo.
Aquí te mostramos cómo puedes usar Apidog para probar tu petición POST:
- Abre Apidog y crea una nueva petición.

2. Establece el método de petición a POST.

3. Introduce la URL del recurso que quieres actualizar. Añade cualquier cabecera o parámetro adicional que quieras incluir y luego haz clic en el botón "Send" para enviar la petición.

4. Verifica que la respuesta es la que esperabas.

Conclusión
En esta entrada de blog, te he mostrado cómo realizar peticiones POST en Node.js utilizando el módulo http y la librería axios. También te he mostrado cómo enviar y recibir datos en diferentes formatos y escenarios. Espero que hayas aprendido algo útil y hayas disfrutado leyendo esta entrada.



