Spring Boot 注解@RequestParam和@RequestBody详情与区别

Spring Boot 注解@RequestParam和@RequestBody详情与区别

@RequestBody测试详情(GET与POST)

POST测试
代码示例

    @ApiOperation(value = "")
    @PostMapping("/test")
    public DemoTest test(@RequestBody DemoTest demoTest) {
        return demoTest;
    }

Postman测试结果
1.请求方式POST,参数在请求体里
在这里插入图片描述
2.请求方式POST,请求参数放在URL问号后面,结果如下:在这里插入图片描述
如图出现错误,证明对于POST(@RequestBody)参数不能放在问号后面

GET测试
代码示例

    @ApiOperation(value = "")
    @GetMapping("/test1")
    public DemoTest test1(@RequestBody DemoTest demoTest) {
        System.out.println("content:>>>>" + demoTest);
        return demoTest;
    }

Postman测试结果

1.请求方式GET,请求参数放在URL问号后面,结果如下:
在这里插入图片描述
如图出现错误,证明对于GET(@RequestBody)参数不能放在问号后面

2.请求方式GET,参数在请求体里,结果如下:

在这里插入图片描述
如图结果,证明对于GET(@RequestBody)参数可以放在请求体里

总结:对于@RequestBody无论是POST还是GET请求参数只能放在请求体里面,当请求方式为GET(@RequestBody)时,请求参数放在请求体里,服务端也能拿到参数
另:

    @ApiOperation(value = "")
    @PostMapping("/test")
    public DemoTest test(@RequestBody() String content) {
        System.out.println("content:>>>>" + content);
        DemoTest demoTest = new DemoTest(content);
        return demoTest;
    }

上面代码参数放在body也能取到

@RequestParam测试详情(GET与POST)

POST测试
代码示例

    @ApiOperation(value = "")
    @PostMapping("/test")
    public DemoTest test(@RequestParam DemoTest demoTest) {
        System.out.println("content:>>>>" + demoTest);
        return demoTest;
    }

经postman测试上面代码错误,@RequestParam不支持pojo类。修改代码:

    @ApiOperation(value = "")
    @PostMapping("/test")
    public DemoTest test(@RequestParam String content) {
        System.out.println("content:>>>>" + content);
        DemoTest demoTest = new DemoTest(content);
        return demoTest;
    }

参数放到问号后面,能取到值:
在这里插入图片描述
参数放body里,格式为form-data也能取到:
在这里插入图片描述
如果格式为raw报错Required String parameter ‘content’ is not present

GET测试
代码示例

    @ApiOperation(value = "")
    @GetMapping("/test1")
    public DemoTest test1(@RequestParam() String content) {
        System.out.println("content:>>>>" + content);
        DemoTest demoTest = new DemoTest(content);
        return demoTest;
    }

参数放到问号后面,能取到值;参数放body里,格式为form-data不能取到值,格式为raw也不能

总结:@RequestParam放在问号后面,无论GET还是POST都能取到值;当POST放在body里格式为form-data也能取到值,其他(raw等)取不到,而为GET放到body都取不到值

把参数放到header里@RequestParam无论GET还是POST都取不到值

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值