Intento eliminar una entidad con una identificación dada. Sin embargo, cuando trato de buscar desde mi API, aparece un error de solicitud incorrecta 400.
async deleteFood(foodId) { const params = { 'id' : foodId } const rawResponse = await fetch("food/delete", { method:"POST", headers: {'Content-Type': 'application/json'}, body: params, }); const content = await rawResponse.json(); }En mi registro de SpringBoot, me muestra que falta el parámetro id:
WARN 7784 --- [nio-8080-exec-7] .wsmsDefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'id' for method parameter type int is not present]Ya intenté poner parámetros en JSON.stringify(), pero esto no cambia nada.
Código del controlador:
@PostMapping(path = "/delete") public @ResponseBody int deleteById(@RequestParam int id) { if (foodRepository.existsById(id)) { foodRepository.deleteById(id); return Response.SC_ACCEPTED; } return Response.SC_BAD_REQUEST; }Está enviando los datos a través del cuerpo, pero en el controlador está esperando eso como @RequestParam
@PostMapping(path = "/delete") public @ResponseBody int deleteById(@RequestParam int id) { if (foodRepository.existsById(id)) { foodRepository.deleteById(id); return Response.SC_ACCEPTED; } return Response.SC_BAD_REQUEST; }Debe cambiar la forma en que recibe id param (@RequestBody en lugar de @RequestParam) algunos como:
@PostMapping(path = "/delete") public @ResponseBody int deleteById(@RequestBody int id) { if (foodRepository.existsById(id)) { foodRepository.deleteById(id); return Response.SC_ACCEPTED; } return Response.SC_BAD_REQUEST; }o cambie la forma en que está enviando desde React (envíelo como un parámetro de URL)