前端向后端傳遞數據時,后端顯示獲取到的數據為NULL,如何解決?

前端向后端傳遞數據時,后端顯示獲取到的數據為NULL,如何解決?

問題描述: 在使用若依分離版框架開發過程中,前端使用POST請求向后端傳遞數據,后端卻接收到了NULL值。

前端代碼:

//修改訂單狀態 export function updatorderstatus(id,status){     const data={         id,         status     }     return request({         url:"/business/orderinfo/updatestate",         method:"post",         data:data     }) }

前端請求數據截圖: (此處應包含前端請求數據的截圖)

后端代碼 (原代碼):

立即學習前端免費學習筆記(深入)”;

@ApiOperation("訂單管理-修改訂單狀態") @ApiImplicitParams({     @ApiImplicitParam(name="id", value = "主鍵id", required = true, dataType = "Integer"),     @ApiImplicitParam(name="status", value = "狀態0進行1結束", required = true, dataType = "integer") }) @PostMapping("/updatestate") public AjaxResult updateState(Integer id, Integer status) {     System.out.println("更改訂單編號:" + id + "n");     System.out.println("更改訂單狀態:" + status + "n");     // ... (其余代碼) }

后端打印結果截圖: (此處應包含后端打印結果的截圖,顯示id和status為null)

問題分析: 后端使用 Integer id, Integer status 接收參數,在處理POST請求時,spring Boot 默認情況下無法正確解析請求體中的json數據到這些參數。

解決方案: 修改后端代碼,使用 @RequestBody 注解將請求體中的JSON數據綁定到一個對象上。

修改后的后端代碼:

@ApiOperation("訂單管理-修改訂單狀態") @PostMapping("/updatestate") public AjaxResult updateState(@RequestBody OrderStatusdtO orderStatusDTO) {     System.out.println("更改訂單編號:" + orderStatusDTO.getId() + "n");     System.out.println("更改訂單狀態:" + orderStatusDTO.getStatus() + "n");      if (orderStatusDTO.getId() == null) {         return AjaxResult.error("輸入主鍵id");     }     if (orderStatusDTO.getStatus() == null) {         return AjaxResult.error("輸入狀態");     }      BorderInfo borderInfo = new BorderInfo();     borderInfo.setId(orderStatusDTO.getId());     borderInfo.setStatus(orderStatusDTO.getStatus());     System.out.println("更改訂單狀態:" + borderInfo.toString() + "n");     orderInfoService.update(borderInfo);     return AjaxResult.success(); }

新增OrderStatusDTO類:

public class OrderStatusDTO {     private Integer id;     private Integer status;      // getters and setters }

通過使用 @RequestBody 注解和創建一個 OrderStatusDTO 類來接收前端傳遞的JSON數據,后端就能正確解析數據,避免 NULL 值的問題。 請確保前端發送的JSON數據與 OrderStatusDTO 的字段名一致。 同時,檢查前端的 request 函數是否正確設置了 headers,例如 Content-Type: application/json。

此方案比原先的@RequestParam方案更符合restful API的設計規范,也更清晰地處理了POST請求的body數據。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享