POST/GET请求中RequestBody和RequestParam的应用场景

常用的前后台交互有以下几种方式:

  1. 直接使用参数获取;
  2. 使用@PathVariable注解;
  3. 使用@RequestParam注解;
  4. 使用@RequestBody注解。

RequestBody

  • 不能接受get , 不能接受form-data和 x-www-form-urlencoded, 但是好像postman也能用get?
  • 只能接受json , 主要接受对象类型,可以接受简单类型的属性(这里只能接受string 当做字符串, 其他类型会报错)。

RequestParam

  • 接受get、 post , 不接受json,可以接受简单类型的属性,不可以接受对象类型!
  • get请求不能使用表单提交获取, 只能用url字符串拼接, post请求才可以接受表单form-data和-form-urlencoded

@PathVariable

  • 如果要获取某个id下此条问题答案的查询次数的话,则后台就需要动态获取参数,其注解@PathVariable
  • 格式@RequestMapping("/testPathVariable/{s}") , String s
  • get ,post都可以

从content-type方面总结:

① form-data、x-www-form-urlencoded:不可以用@RequestBody;可以用@RequestParam。这两种方式没有json字符串部分。
② application/json:json字符串部分可以用@RequestBody;url中的?后面参数可以用@RequestParam。
所以: @Requestparam 和@RequestBody不能同时使用,这是错误的。根据HTTP协议,并没有说post请求不能带URL参数,经验证往一个带有参数的URL发送post请求也是可以成功的。

其他:

  • @RequestParam不能接受对象
  • 直接使用参数获取可以接受form-data和x-www-form-urlencoded的对象,还能接受raw 的json数据,但是只能是对象!!!单个参数里面写json 不行除了string!@RequestBody也不能单个参数写json除了string
  • 直接使用参数获取可以传参为空
  • @RequestParam, @PathVariable,@RequestBody一定要传参值
  • vue的axios默认会自动封装成json数据

Postman:

Header: 根据发送的类型对应上conten-type,还有一些token也可以放在头header
Authorization: 身份验证,主要用来填写用户名密码,以及一些验签字段;

form-data: 对应信息头-multipart/form-data,它将表单数据处理为一条消息,以标签为单元用分隔符分开。既可以上传键值对,也可以上传文件(当上传字段是文件时,会有Content-Type来说明文件类型);

x-www-form-urlencoded: 对应信息头-application/x-www-from-urlencoded,会将表单内的数据转换为键值对,比如name=zhangsan;
multipart/form-data与x-www-form-urlencoded区别:

  • multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
  • x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

raw: 可以上传任意类型的文本,比如text、json、xml等;要传参json必须选择json格式,不然接受不到或者有问题

binary: 对应信息头-Content-Type:application/octet-stream,只能上传二进制文件,且没有键值对,一次只能上传一个文件;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值