¿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
http
utilizando la funciónrequire
. - Crea un objeto
options
que 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.request
para crear un objeto de petición, pasando el objetooptions
como 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 objetoresponse
como su parámetro. - Utiliza el objeto
request
para enviar los datos y finalizar la petición. El objetorequest
es una instancia de la clasehttp.ClientRequest
, que implementa la interfazWritableStream
. Esto significa que puedes utilizar el objetorequest
como un flujo de datos, y escribir datos en él utilizando el métodorequest.write
. También puedes utilizar el métodorequest.end
para señalar el final de los datos y la petición. También puedes escuchar eventos comoerror
ytimeout
en el objetorequest
, y manejarlos en consecuencia. - Utiliza el objeto
response
para manejar los datos de la respuesta y las cabeceras. El objetoresponse
es una instancia de la clasehttp.IncomingMessage
, que implementa la interfazReadableStream
. Esto significa que puedes utilizar el objetoresponse
como un flujo de datos, y escuchar eventos comodata
,end
yerror
. También puedes utilizar la propiedadresponse.statusCode
para obtener el código de estado de la respuesta, y la propiedadresponse.headers
para obtener las cabeceras de la respuesta. - Utiliza el método
response.on
para 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 objetochunk
como 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 objetoerror
como 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
axios
utilizando el comandonpm
:npm install axios
. - Importa la librería
axios
utilizando la funciónrequire
. - Utiliza el método
axios.post
para 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 objetoconfig
opcional 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.post
devolverá una promesa, que se resolverá en un objetoresponse
o se rechazará en un objetoerror
. - Utiliza el método
catch
para manejar la promesa rechazada, pasando una función de callback como primer argumento. La función de callback tendrá un objetoerror
como su parámetro, que contiene el mensaje de error, el código, la petición y la respuesta. Puedes utilizar la propiedaderror.response
para acceder al objeto de respuesta, y la propiedaderror.request
para acceder al objeto de petición. - Alternativamente, puedes utilizar la sintaxis
async/await
para realizar la petición POST y manejar la respuesta. Para ello, necesitas utilizar la palabra claveasync
antes de la función que contiene la petición POST, y la palabra claveawait
antes del métodoaxios.post
. Esto te permitirá escribir código asíncrono de forma síncrona, y asignar el objetoresponse
a una variable. Puedes entonces utilizar el bloquetry/catch
para 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-data
para 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-data
con 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
stream
integrado. 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.