簡體   English   中英

嘗試使用 React 從 SpringBoot 獲取時出現 400 錯誤請求

[英]400 Bad request when trying to fetch from SpringBoot using React

我嘗試刪除具有給定 ID 的實體。 但是,當我嘗試從我的 API 中獲取時,我收到 400 bad request 錯誤。

    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();
}

在我的 SpringBoot 日志中,它顯示缺少 id 參數:

WARN 7784 --- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'id' for method parameter type int is not present]

我已經嘗試將參數放入 JSON.stringify(),但這並沒有改變任何東西。

控制器代碼:

@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;
}

您正在通過正文發送數據,但在控制器中您正在等待 @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;
}

您需要更改接收 id 參數(@RequestBody 而不是@RequestParam)的方式,例如:

@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;
}

或更改您從 React 發送的方式(將其作為 url 參數發送)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM