Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

127
Visualizações
¿Cómo realizo una solicitud POST correctamente?

Trabajando en una API simple. Logré que las solicitudes GET & DELETE funcionen, pero tengo algunos problemas con la solicitud POST. Estoy bastante seguro de que este es un error de novato, pero me falta la lógica aquí.

Este es el archivo donde se definen todas las rutas.

 import express from 'express'; import fs from 'fs'; const router = express.Router(); 'use strict'; let rawdata = fs.readFileSync('api/resources/vehicles.json'); let vehicles = JSON.parse(rawdata); let vehiclesArray = vehicles.vehicles; let data = JSON.stringify(vehicles); fs.writeFileSync('api/resources/vehicles.json', data); router.get('/', (req, res, next) => { res.status(200).json(vehiclesArray); }); router.get('/:id', (req, res, next) => { let id = req.params.id; res.status(200).send(vehiclesArray[(id-1)]); }); router.delete('/:id', (req, res, next) => { let id = req.params.id; const removedVehicle = vehiclesArray.splice(id, 1); res.status(200).json({ message: `Vechicle ${removedVehicle} with id ${id} was removed` }); }); router.post('/', (req, res, next) => { let id = vehiclesArray.length + 1; const vehicle = { "id" : id, "type" : req.params.type, "brand" : req.params.brand, "model" : req.params.model, "production_year" : req.params.production_year, "kilometers_driven" : req.params.kilometers_driven, "price" : req.params.price }; res.status(201).send({ message: `POSTed new vehicle: ${vehicle}`, vehicle: vehicle }); res.status(201).send(vehiclesArray.push(vehicle)); }); export default router;

Dentro de mi método POST, definí el vehículo, pero una vez que intento enviarlo, obtengo lo siguiente en Postman, a saber, una confirmación de un objeto agregado y el objeto, pero solo con la propiedad id. ingrese la descripción de la imagen aquí

¿Puede alguien por favor darme una pista tal vez en lo que estoy haciendo mal? ¿También necesito una declaración de clase? ¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Mire la documentación de la API para params :

Esta propiedad es un objeto que contiene propiedades asignadas a los "parámetros" de la ruta con nombre. Por ejemplo, si tiene la ruta /usuario/:nombre, la propiedad "nombre" está disponible como req.params.name. Este objeto por defecto es {}.

Ahora mira tu ruta.

 router.post('/', (req, res, next) => {

No tienes ningún parámetro allí. Así que eso no puede ser lo correcto.


Ahora mire la captura de pantalla de Postman, está completando los datos en la pestaña denominada Cuerpo .

Vuelva al documento de la API y hojee la lista de propiedades.

req.body aparece allí y dice:

Contiene pares clave-valor de datos enviados en el cuerpo de la solicitud. De forma predeterminada, no está definido y se completa cuando usa un middleware de análisis del cuerpo, como express.json() o express.urlencoded().


Así que configure un middleware de análisis del cuerpo, luego cambie los datos que está enviando para que estén realmente en ese formato (su captura de pantalla muestra que está ingresando datos sin procesar que son casi JSON, pero no del todo, por lo que debe arreglar eso) , asegúrese de ir a la sección Encabezados y configure el encabezado Content-Type para describir el formato que está enviando, luego mire req.body en lugar de req.params .

about 4 years ago · Juan Pablo Isaza Relatório

0

Según lo aconsejado por @Quentin: instalé el analizador de cuerpo y lo incluí en mi código.

 import bodyParser from "body-parser"; router.use(express.json()); router.use(bodyParser.urlencoded({ extended: true }));

Luego cambié el req.param* a req.body* en el cuerpo de la función posterior.

 router.post('/:id', (req, res, next) => { let id = vehiclesArray.length + 1; const vehicle = { "id" : id, "type" : req.body.type, "brand" : req.body.brand, "model" : req.body.model, "production_year" : req.body.production_year, "kilometers_driven" : req.body.kilometers_driven, "price" : req.body.price }; res.status(201).send({vehicle: vehicle}); res.status(201).send(vehiclesArray.push(vehicle)); });

Como último paso, cambié el tipo de cuerpo en Postman a x-www-form-urlencoded. PUBLICAR a continuación, localhost:3000/vehículos/:id Al completar el

GET a continuación, solo para verificar si el objeto se agregó: ingrese la descripción de la imagen aquí

También útil en mi esfuerzo: https://www.npmjs.com/package/body-parser

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda