springboot如何接收application/x-www-form-urlencoded類型的請求
請求數據
- id:1
- roleName:admin
- roleDes:擁有admin權限
Controller幾種處理方式
第一種
@ApiOperation("查詢用戶") @PostMapping("/detailByParam") public void detailByParam(@RequestParam (value = "id") Integer id,@RequestParam(value = "roleName") String roleName,@RequestParam(value = "roleDes") String roleDes) { System.out.println(">>>id="+id+",roleName="+roleName+",roleDes="+roleDes); }
打印信息:
>>>id=1,roleName=admin,roleDes=擁有admin權限
第二種
@ApiOperation("查詢用戶") @PostMapping("/detailByParam") public void detailByParam(@RequestParam Map<String, String> params) { System.out.println(">>>id="+params.get("id")+",roleName="+params.get("roleName")+",roleDes="+params.get("roleDes")); }
打印信息:
>>>id=1,roleName=admin,roleDes=擁有admin權限
第三種
@ApiOperation("查詢用戶") @PostMapping("/detailByParam") public void detailByParam(@RequestBody String params) { System.out.println(">>>"+params); }
打印信息:
>>>id=1&roleName=admin&roleDes=%E6%8B%A5%E6%9C%89admin%E6%9D%83%E9%99%90
第四種
@ApiOperation("查詢用戶") @PostMapping("/detailByParam") public void detailByParam(@RequestBody GetRoleParam getRoleParam) { System.out.println(">>>"+getRoleParam); }
返回錯誤信息:
“Content type ‘application/x-www-form-urlencoded;charset=UTF-8′ not supported”
SpringMVC application/x-www-form-urlencoded接收方式測試
前提:為瞭便於理解
- 類全部使用@Controller,不使用RestController
- 方法使用@RequestMapping
- postman都是如下請求
1.參數前不加註解
1.1 request
成功!
1.2 map
失敗!
1.3 pojo
成功!
2.參數前添加@RequestParam
2.1 request
失敗!
2.2 map
成功!
2.3 poji
失敗!
3.參數前添加@RequestBody
3.1 request
失敗!
3.2 map
失敗!
3.3 pojo
失敗!
小結一下
Request |
Map |
Pojo |
|
不加註解 |
√ |
× |
√ |
@RequestParam |
× |
√ |
× |
@RequestBody |
× |
× |
× |
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 聊聊@RequestParam,@PathParam,@PathVariable等註解的區別
- feign post參數對象不加@RequestBody的使用說明
- Java axios與spring前後端分離傳參規范總結
- 使用Spring處理x-www-form-urlencoded方式
- Spring MVC如何使用@RequestParam註解獲取參數