老师能不能讲一下@requestParam @requestBody和不加注解的区别呀

老师能不能讲一下@requestParam @requestBody和不加注解的区别呀

如题,做前后端分离的时候遇到了传参的问题,查找资料发现是注解的问题,能不能讲一下他们之间的关系和区别呢

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,报错提示如下请求头不被@RequestBody支持,

http://img1.sycdn.imooc.com//climg/6075067809bd1ff907210092.jpg

这个可能是同学传参的形式错误。

问一下同学使用postman测试时,是使用类似如下形式传递的json对象吗?

http://img1.sycdn.imooc.com//climg/6075063109e5ce9007730250.jpg

上边这种形式的请求,请求头应该是application/json,如:

http://img1.sycdn.imooc.com//climg/607506ca094537a706610210.jpg

如果请求类似是application/json就不会报同学贴出来的错误。

祝学习愉快~



  • fever腾腾 提问者 #1

    用postman的row json格式是可以正常传参给@RequestBody的

    就是用前端传参的时候要把注释去掉

    http://img1.sycdn.imooc.com//climg/60751ab40920504908980217.jpg

    这里是不是就涉及到前端传参的知识了

    2021-04-13 12:15:03
  • 好帮手慕阿满 回复 提问者 fever腾腾 #2

    同学你好,是的,这里和传递参数的类型有关。在开发时,需要事先写好接口文档,规定参数的类型。

    祝学习愉快~

    2021-04-13 14:04:55
好帮手慕阿满 2021-04-12 14:36:29

同学你好,

@RequestParam:接收的参数是来自Http请求体或请求url的QueryString中。RequestParam可以接受简单类型的属性,也可以接受对象类型。

@RequestBody:接收的参数是来自RequestBody请求体中。一般用于处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

在GET请求中,没有请求体,不适合使用@RequestBody,适合使用@RequestParam。

在POST,PUT等请求中,当要发送的数据比较多时,适合使用@RequestBody。

在后端的同一个接收方法里,@RequestBody与@RequestParam可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

祝学习愉快~

  • 提问者 fever腾腾 #1

    我看到还有一种情况是不用写注释的,写了注释反而报错。不写注释的这种是属于什么情况呢

    2021-04-12 15:47:49
  • 好帮手慕阿满 回复 提问者 fever腾腾 #2

    同学你好,同学是指写了哪个注释报错,报什么错误,建议同学将具体问题描述一下。

    祝学习愉快~

    2021-04-12 16:25:21
  • 提问者 fever腾腾 回复 好帮手慕阿满 #3

    http://img1.sycdn.imooc.com//climg/6074ed5a091a310c11770222.jpg

    这是我自己写的一个接口,用前后端分离访问接口。使用了注解

    @RequestBody

    的情况下,报错

    错误提示:

    [04:13 09:00:32.555] [ERROR] [com.tt.association.exception.GlobalExceptionHandler] - Default Exception:

    org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported


    当我把这个注解删掉之后

    http://img1.sycdn.imooc.com//climg/6074eddf09f41ce310180235.jpg

    是可以正常访问接口并返回正确的信息的。

    用postman的时候加注释是可以用的...


    2021-04-13 09:04:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师