Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

351
Vistas
Recibo un error de solicitud incorrecta 400: "Se requiere un cuerpo de solicitud que no esté vacío" de mi solicitud de recuperación, a pesar de que mi solicitud de recuperación tiene un cuerpo

Cada vez que realizo una solicitud de recuperación desde mi interfaz utilizando el siguiente código js, recibo un estado de solicitud 400 Bad. El cuerpo de la respuesta tiene un objeto de error que dice: "Se requiere un cuerpo de solicitud que no esté vacío".

Cuando inspecciono la sección de solicitud en mi pestaña de red de devtools, dice "no hay carga útil para esta solicitud". Así que me parece que no está enviando la sección del cuerpo de mi Fetch.

Llega al método .then() después.

Este es el código mecanografiado:

 fetch(`api/person/${person.id}`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(person) }) .then(() => this.router.navigate(["/"]))

este es el back-end de C#:

 [HttpPut("{id}")] public IActionResult Put(int id, Person person) { person.Id = id; try { var updatedPerson = _personRepository.Update(person); if (updatedPerson != null) { return Ok(updatedPerson); } return NotFound(); } catch (ArgumentNullException) { return BadRequest(); } }

Tenga en cuenta que la solicitud ni siquiera llega a este controlador. No se alcanzarán puntos de quiebre si coloco alguno aquí.

Esta es una aplicación de una sola página que ejecuto desde Visual Studio 2019.

Sin embargo, funciona con el cartero, devolviendo el código de estado 200 Ok y un objeto, y alcanzando los puntos de interrupción del back-end. La URL de solicitud contiene la int id y el cuerpo que contiene un objeto Json.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Bueno, esta no es una pregunta que tenga una respuesta clara. Estos son los pasos que podría necesitar tomar para averiguarlo:

  • Asegúrese de que en su solicitud de búsqueda el argumento persona realmente existe, solo haga console.log (persona) antes de buscar

  • Asegúrese de que el servidor acepte contenido de tipo 'aplicación/json'. Aunque en este caso el código de respuesta debería haber sido diferente.

  • Verifique los encabezados de respuesta, y ¿los orígenes de back-end y front-end son los mismos? Lo que tienes que ver es lo siguiente:

     Access-Control-Allow-Headers: * Access-Control-Allow-Methods: PUT Access-Control-Allow-Origin: *

Postman funciona como una aplicación nativa en su PC y tiene una forma diferente de enviar solicitudes en lugar de su navegador, a veces esto provoca resultados poco claros.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay una manera de probar lo que está sucediendo.

  1. Vaya a su sitio web principal (http://localhost:5001 o lo que sea) en su navegador
  2. Abra las herramientas de desarrollo del navegador (F12 en la mayoría de los navegadores)
  3. copie / pegue la siguiente búsqueda (código a continuación) en su consola de desarrollo y presione

¿Lo que sucede? ¿Recupera los datos (impresos en la consola)? Esto probablemente lo llevará al siguiente paso que debe tomar.

 fetch("api/person/1") .then(response => response.json()) .then(data => console.log(data));
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda