GET请求和@RequestBody碰撞出来的问题!!!

问题描述

当后端使用GET请求来接受一个实体对象时,使用了@RequestBody,用postman以json的格式能够请求成功,但是通过前端访问缺爆错误请求。因为我们通常首先都会想得到 @RequestBody让接受的参数转成json格式并自动将数据绑定到实体对象上,这么想其实是没得错的,但是请看以下分析:

  1. GET和POST请求的传参区别:GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连;POST把提交的数据则放置在是HTTP包的包体中。
  2. @RequestBody的作用:
    1. 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上;
    2. 再把 HttpMessageConverter 返回的对象数据绑定到 controller 中方法的参数上。
  3. @RequestBody的使用时机:根据 request header Content-Type 的值来判断,与请求类型无直接关系

总结

application/json的请求头类型是能够请求成功的,使用浏览器输入URL的方式没有办法定义Content-Type。一般GET请求的参数为实体对象的时候不用@RequestBody也能请求成功,但是此时不能够有多个实体对象传参。@RequestBody的使用也是一样,一个方法只能有一个该注解。

借鉴博客:

@RequestBody, @ResponseBody 注解理解

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值