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。

推薦閱讀: