亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

POST 調用接受 x-www-form-urlencoded 但拒絕 JSON

POST 調用接受 x-www-form-urlencoded 但拒絕 JSON

慕田峪4524236 2023-07-19 16:36:18
我正在嘗試打電話POST。我的身體只有一個參數,所以我想簡單地使用@RequestParam.代碼:    @RequestMapping(value = "/call", method = RequestMethod.POST)    @ResponseBody    public void doStuff(@RequestParam List<Integer> nums,                                   HttpServletResponse response) {通話x-www-form-urlencoded效果很好-卷曲 -X POST https://localhost:9002/call-H '授權:承載 d1436121-25f7-4162-b0d4-7699d4acf147'-H '內容類型:application/x-www-form-urlencoded'-H '主機:localhost:9002'-d nums=0%2C1% 2C3但使用 JSON 進行同樣的調用會失敗。代碼:        @RequestMapping(value = "/call", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)        @ResponseBody        public void doStuff(@RequestParam List<Integer> nums,                                       HttpServletResponse response) {呼叫application/json失敗-curl -X POST https://localhost:9002/call-H '授權:承載 d1436121-25f7-4162-b0d4-699d4acf147'-H '內容類型:application/json'-H '主機:localhost:9002'- d '{ "nums":[0,1,3] }'錯誤:{ "errors": [ { "message": "抱歉,發生錯誤。", "type": "MissingServletRequestParameterError" } ] }為什么它接受x-www-form-urlencoded卻又拒絕JSON。
查看完整描述

3 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

您的curl 命令未正確格式化“nums”值。它應該是:

-d '{ "nums":[0,1,3] }'


查看完整回答
反對 回復 2023-07-19
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

@RequestParam您只能與 URL 查詢參數、表單數據或多部分負載一起使用。如果您想使用 JSON 有效負載,則應使用@RequestBody注釋并將該 JSON 映射到 Java 對象。

在 Spring MVC 中,“請求參數”映射到查詢參數、表單數據和多部分請求中的部分。這是因為 Servlet API 將查詢參數和表單數據組合到一個稱為“參數”的映射中,其中包括請求正文的自動解析。


查看完整回答
反對 回復 2023-07-19
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

如果是 post 請求,您應該使用 @RequestBody 注釋。



查看完整回答
反對 回復 2023-07-19
  • 3 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號