Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Las 4 mejores formas de realizar solicitudes POST en Node.js

Aprende a hacer peticiones POST en Node.js con el módulo http y axios. Envía y recibe datos en varios formatos.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

¿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.

button

¿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.

NodeJs Website

¿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:

  1. Importa el módulo http utilizando la función require.
  2. 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.
  3. Utiliza el método http.request para crear un objeto de petición, pasando el objeto options 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 objeto response como su parámetro.
  4. Utiliza el objeto request para enviar los datos y finalizar la petición. El objeto request es una instancia de la clase http.ClientRequest, que implementa la interfaz WritableStream. Esto significa que puedes utilizar el objeto request como un flujo de datos, y escribir datos en él utilizando el método request.write. También puedes utilizar el método request.end para señalar el final de los datos y la petición. También puedes escuchar eventos como error y timeout en el objeto request, y manejarlos en consecuencia.
  5. Utiliza el objeto response para manejar los datos de la respuesta y las cabeceras. El objeto response es una instancia de la clase http.IncomingMessage, que implementa la interfaz ReadableStream. Esto significa que puedes utilizar el objeto response como un flujo de datos, y escuchar eventos como data, end y error. También puedes utilizar la propiedad response.statusCode para obtener el código de estado de la respuesta, y la propiedad response.headers para obtener las cabeceras de la respuesta.
  6. Utiliza el método response.on para registrar listeners de eventos para el objeto response. Por ejemplo, puedes utilizar el método response.on('data', callback) para escuchar el evento data, que se emitirá cuando se reciba un fragmento de datos. La función de callback tendrá un objeto chunk como su parámetro, que es un buffer de datos. Puedes utilizar el método chunk.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étodo response.on('end', callback) para escuchar el evento end, 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étodo response.on('error', callback) para escuchar el evento error, que se emitirá cuando se produzca un error durante la respuesta. La función de callback tendrá un objeto error 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:

  1. Instala la librería axios utilizando el comando npm: npm install axios.
  2. Importa la librería axios utilizando la función require.
  3. 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 objeto config 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étodo axios.post devolverá una promesa, que se resolverá en un objeto response o se rechazará en un objeto error.
  4. 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 objeto error como su parámetro, que contiene el mensaje de error, el código, la petición y la respuesta. Puedes utilizar la propiedad error.response para acceder al objeto de respuesta, y la propiedad error.request para acceder al objeto de petición.
  5. Alternativamente, puedes utilizar la sintaxis async/await para realizar la petición POST y manejar la respuesta. Para ello, necesitas utilizar la palabra clave async antes de la función que contiene la petición POST, y la palabra clave await antes del método axios.post. Esto te permitirá escribir código asíncrono de forma síncrona, y asignar el objeto response a una variable. Puedes entonces utilizar el bloque try/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:

  1. 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 usar JSON.parse() para convertir la respuesta de nuevo en un objeto o array de JavaScript.
  2. 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ía form-data con npm y luego usarla para crear y enviar el objeto de datos de formulario.
  3. 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.

button

Aquí te mostramos cómo puedes usar Apidog para probar tu petición POST:

  1. Abre Apidog y crea una nueva petición.
Select new request

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

Select Post request

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.

Verify the response

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.

button
Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)Tutoriales

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

Daniel Costa

April 15, 2025

Cómo usar n8n con servidores MCPTutoriales

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

Daniel Costa

April 14, 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completaTutoriales

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

Daniel Costa

April 11, 2025