Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

336
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!