es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No puedo obtener una solicitud en formato de cuerpo en Node.js.

Tengo problemas al recibir solicitudes en formato de cuerpo en mi servidor.

Estoy utilizando la versión 4.17.1 de Express. La documentación indica que no tengo que usar body-parser, sino que puedo hacerlo directamente con la funcionalidad “express.json()”.

Sin embargo, he estado intentando que funcione durante mucho tiempo pero no pasa nada: la consola no muestra nada. Parece que no reconoce la solicitud en absoluto.

Estoy realizando todas las solicitudes desde Postman en formato de cuerpo JSON.

Este es mi código:

const express = require("express");
const formidable = require("express-formidable");
const cors = require("cors");
const dotenv = require("dotenv").config();

const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(formidable());
app.use(cors());

(...)

app.post("/list", async (req, res) => {
  try {
    console.log(req.body);
  } catch (error) {
    return res.status(400).json({ message: error.message });
  }
});

¿Qué estoy haciendo mal?

Muchas gracias por su tiempo y ayuda de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según el código proporcionado, parece que ya tienes todo configurado correctamente con express.json(). Sin embargo, hay un par de cosas que puedes probar:

    1. Asegúrate de que estás enviando la solicitud con el encabezado Content-Type correcto. Para las solicitudes JSON, debería ser application/json. Puedes verificar esto en la pestaña “Headers” en Postman.
    2. Agrega un middleware para registrar las solicitudes entrantes y asegurarte de que el problema no esté en Postman o en la solicitud misma. Puedes hacer esto agregando el siguiente código antes de tu ruta /list:

      app.use((req, res, next) => {
       console.log(req.method, req.path, req.body);
       next();
      });
      

      Esto registrará cada solicitud que pase por tu servidor, incluyendo el método de solicitud, la ruta y el cuerpo de la solicitud. Si no ves ningún registro para tu solicitud POST, podría indicar que el problema está en la solicitud misma más que en tu servidor.

    3. Si todavía tienes problemas después de probar los pasos anteriores, puedes intentar analizar manualmente el cuerpo de la solicitud usando JSON.parse:

      app.post("/list", async (req, res) => {
       try {
         const data = JSON.parse(req.body);
         console.log(data);
       } catch (error) {
         return res.status(400).json({ message: error.message });
       }
      });
      

      Esto intentará analizar el cuerpo de la solicitud como JSON y registrará los datos resultantes. Si hay un problema con el cuerpo de la solicitud, esto lanzará un error de sintaxis y será capturado en el bloque catch.

    ¡Esperemos que una de estas soluciones funcione para ti! Avísame si tienes alguna otra pregunta.

Comments are closed.