前后端参数传递总结(@RequestParam @RequestBody@PathVariable)_pathvariable前端传参-程序员宅基地

技术标签: java  后端  开发语言  

前后端参数传递总结(@RequestParam @RequestBody@PathVariable)

@RequestParam

@RequestParam 常用来处理简单类型的绑定,其原理是通过Request.getParameter() 获取参数值的。因为使用request.getParameter()方式获取参数,所以可以处理get 方式中参数的值,也可以处理post方式中 表单中参数的值;提交方式GET、POST;注解有两个属性: value、required; value用来指定要传入值的id名称(即请求参数的key对应,也是表单属性的name的值对应),required用来指示参数是否必须绑定,默认为true即请求参数必须携带该参数,不携带将报错;
实例:

  @PostMapping("/method12")
    public ApiResponse method12(@RequestParam(value = "id",required = true) int id, @RequestParam(value = "name",required = false)String name){
    
        String s = id + "" + name;
        System.out.println(s);
        return ApiResponse.ok().data(s);
    }

请添加图片描述
说明:这里的get和post方式将参数放入Params中都能进行访问,如果是post请求的话,将参数放入form_data中和放入x-www-formdate-urlencoded中后端都能接收到,这里的@RequestParam在一个接口方法参数中可以使用多个.
接口方法参数不使用任何注释:这其实也是默认使用的是Request.getParameter() 方法对参数进行获取的,只是没有显示使用@RequestParam而已,但是这也存在区别,不使用@RequestParam注解时,前端请求参数携带与不携带都能正常访问接口,只是接收的参数值为空而已,相当于@RequestParam的required的值是false一样,而在使用@RequestParam注解且为未说明required的值是false的时候,前端请求就必须携带参数,不然直接报错.

@RequestBody

@RequestBody 适用于以POST为请求方式,请求参数以Json格式放在请求体中的前端请求,所以在使用@RequestBody接收数据时,一般都用POST方式进行提交,并将参数放以Json的格式放在请求体中。
处理的数据的请求头Content-Type:application/json, application/xml等,不能是application/x-www-form-urlencoded编码的内容;
其参数解析主要是SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
当然在后端接口中,@RequestBody与@RequestParam()可以同时使用,但得注意@RequestBody最多只能有一个,而@RequestParam()可以有多个。
使用实例:
@RequestBody+基本数据List+json

   @PostMapping("/method8")
    public ApiResponse method8(@RequestBody List<String> hobbies){
    
        System.out.println(hobbies);
        return ApiResponse.ok().data(hobbies);
    }

请添加图片描述
@RequestBody+自定义对象List+json

 @PostMapping("/method9")
    public ApiResponse method9(@RequestBody List<Dog> dogs){
    
        System.out.println(dogs);
        return ApiResponse.ok().data(dogs);
    }

请添加图片描述
@RequestBody+map+json

@PostMapping("/method2")
    public ApiResponse method2(@RequestBody Map<String,Integer> map){
    
        System.out.println(map.toString());
        return ApiResponse.ok().dataMap(map);
    }

在这里插入图片描述
@RequestBody+实体类对象+json

@PostMapping("/method4")
    public ApiResponse method4(@RequestBody Dog dog){
    
        System.out.println(dog.toString());
        return ApiResponse.ok().data(dog);
    }

请添加图片描述
@RequestBody+Vo封装基本数据与List与自定义实体对象+json

  @PostMapping("/method6")
    public ApiResponse method6(@RequestBody DemoVo demoVo){
    
        System.out.println(demoVo.toString());
        return ApiResponse.ok().data(demoVo);
    }

请添加图片描述
@RequestBody+Vo封装多个自定义实体对象+json

@PostMapping("/method10")
    public ApiResponse method10(@RequestBody UserVo userVo){
    
        System.out.println(userVo);
        return ApiResponse.ok().data(userVo);
    }

请添加图片描述
@PathVariable+@RequestBody+基本数据与对像集合+json实现集合与基本数据同传(这里的集合对象也可以为自定义的对象)

   @PostMapping("/method/{id}")//这里的id参数属于请求路径的一部分
    public ApiResponse method7(@PathVariable("id") int id, @RequestBody List<String> hobbies){
    
        String s = id + "" + hobbies;
        System.out.println(s);
        return ApiResponse.ok().data(s);
    }

@RequestParam+@RequestBody+基本数据与对像集合+json实现集合与对象同传(这里的集合对象也可以为自定义的对象)与使用@PathVariable没什么区别,并且两者都可以使用多个@RequestParam或者@PathVariable来映射更多地址栏的数据

   @PostMapping("/method11")
    public ApiResponse method11(@RequestParam("id") int id, @RequestBody List<Dog> dogs){
    
        String s = id + "" + dogs;
        System.out.println(s);
        return ApiResponse.ok().data(s);
    }

请添加图片描述

@RequestBody请求参数优化

这里涉及到使用@RequestBody接收不同的对象

  1. 创建一个新的实体,将两个实体都进去。这是最简单的,但是不够“优雅”。
  2. 用Map<String, Object>接受request body,自己反序列化到各个entity中。
  3. 类似方法2,不过更为优雅,实现自己的HandlerMethodArgumentResolver 参考

@PathVariable

@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值,这里的所谓占位符就是将请求参数放在请求路径中成为路径的一部分,通过@PathVariable来获取路径中的参数,从而获取其中的参数值,前面我们已经使用过了,这里就不多举例了.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yigan123/article/details/121036149

智能推荐

RabbitMQ:安装延迟插件_rabbitmq_delayed_message_exchange-3.8.0.ez-程序员宅基地

文章浏览阅读1.3k次。步骤:在Linux下安装插件,首先将rabbitmq_delayed_message_exchange-3.8.0.ez安装包复制到rabbitmq安装包的plugins文件中,再进入该文件中,运行安装插件命令进行安装,安装成功后,重启rabbitmq服务,打开浏览器,进入rabbitmq界面的exchanges界面,在Add a new exchange中的Type如果出现x-delayed-message,则代表安装成功。具体:查询rabbitmq安装包路径命令:whereis rabbitmq_rabbitmq_delayed_message_exchange-3.8.0.ez

多大密西沙加计算机科学与技术,多伦多大学第二大校区——密西沙加校区专业及双录取介绍...-程序员宅基地

文章浏览阅读1.3k次。原标题:多伦多大学第二大校区——密西沙加校区专业及双录取介绍多伦多大学 (University of Toronto,简称U of T,UT),始建于1827年,坐落在加拿大第一大城市多伦多,起源于公元1827年的国王学院King's College。 多伦多大学亦为美国大学协会中仅有的两所非美国学府之一(另一所即为著名的麦吉尔大学)。多伦多大学每年发表的科研论文数量在北美仅次于哈佛大学,引用数量..._多伦多大学密西沙加校区计算机科学专业

Vue+Element-UI Table表头排序_element ui table 排序-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏6次。Vue+Element-UI Table表头排序Vue代码定义后台需要接受的排序属性排序sortChangeVue代码<el-table v-loading="loading" :data="standardList" @sort-change='sortChange'> <el-table-column label="序号" prop="id" width="80" sortable='custom'/></el-table>在<el-tab_element ui table 排序

Verilog HDL 同步复位和异步复位(转)_同步复位与异步复位verilog-程序员宅基地

文章浏览阅读7.4k次,点赞5次,收藏68次。目录1、同步复位2、异步复位3、同步/异步复位对比4、异步复位同步释放4.1、异步复位同步释放原理在实际的工程中选择复位策略之前必须考虑许多设计方面的问题,如使用同步复位或者异步复位或者异步复位同步释放(Asynchronous Reset Synchronous Release或者Synchronized Asynchronous Reset),以及是否每一个触发器..._同步复位与异步复位verilog

IDEA Mapper文件直接跳转到xml文件的方法(安装插件MyBatisX)_mapper跳转xml的插件-程序员宅基地

文章浏览阅读9.1k次,点赞8次,收藏11次。IDEA Mapper文件直接跳转到xml文件的方法(安装插件MyBatisX)_mapper跳转xml的插件

python解析wav语音文件_python查看.wav编码格式-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏17次。说明本文主要使用python编程,实现解析wav语音文件,得到.wav语音文件的声道数,量化位数,采样频率,采样点数。编写python程序使用pycharm。下面简单介绍一下wav文件结构。一 解析.wav文件原理WAVE文件本质上就是一种RIFF格式,它可以抽象成一颗树(数据结构的一种)来看。​ 如图所示,从上到下分别对应着二进制数据在文件中相对于起始位置的偏移量。每一个格子对应一..._python查看.wav编码格式

随便推点

windows下安装scrapy问题解决办法_file "c:\users\11310\scrapy_daren_new\lib\site-pac-程序员宅基地

文章浏览阅读3.6k次,点赞9次,收藏6次。Scrapy是爬虫界大名鼎鼎的存在,在Linux下安装非常顺利,但是在Windows下确实非常多的问题发生,这里记录存在的各类问题以及如何解决。1. 安装Scrapy失败 直接在windows下安装scrapy大概率会是失败的,主要原因是各类依赖包未必全部安装,故依据具体的问题而定。 >> pip install scrapy2. openssl Tr_file "c:\users\11310\scrapy_daren_new\lib\site-packages\scrapy\utils\defer.p

APP的支付方式及特点_app支付渠道和主体不同-程序员宅基地

文章浏览阅读110次。需要注意的是,中国国内的支付方式可能在不同的应用和商户中有所不同,用户和开发者可以根据应用的需求选择合适的支付方式。此外,中国的支付生态系统也在不断演变和创新,新的支付方式和技术不断涌现,以满足用户和市场的需求。微信支付是腾讯旗下的支付服务,允许用户使用微信APP进行支付、转账、购物等。它也支持扫描二维码进行支付。除了上述主要支付方式外,还有一些其他第三方支付平台,如快钱、易宝支付、翼支付等,它们提供在线支付和服务。QQ钱包是腾讯提供的支付服务,用户可以在QQ及其关联应用上使用,支持多种支付方式。_app支付渠道和主体不同

聊城大学计算机学院宿管部,计算机学院-程序员宅基地

文章浏览阅读257次。聊城大学计算机学院文件计算机学院发【2015】6号计算机学院学生考勤管理规定为不断加强和优化学院学风建设,进一步规范学院教学秩序和生活秩序,督促学生积极参加并高质量完成学校学院规定的学习任务和各项活动,使其在德智体美劳等方面得到全面发展,根据《聊城大学学生考勤管理规定》等有关文件精神,结合我院实际,制定本规定。第一条学生应自觉遵守学校学院纪律,按时参加教学计划和学校、学院统一安排、组织的一切活动。..._聊城大学计算机学院让出去住吗

RHEL7xfs文件系统备份恢复-程序员宅基地

文章浏览阅读292次。实战:xfs文件系统的备份和恢复XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。与传统的UNIX文件系统不同,XFS不需要在dump前被卸载;对使用中的XFS文件系统做dump就可以保证镜像的一致性。这与XFS对快照的实现不同,XFS的dump和restore的过程是可以被中断然后继续的,无须冻结文..._error: cannot dump to /data/data_backup file type 4000

在colab上运行GitHub项目_colab运行github项目-程序员宅基地

文章浏览阅读4.7k次,点赞4次,收藏40次。运行我们这个项目,注意,我们当前是在仓库(Bert-Chinese-Text-Classification-Pytorch)的这个目录下,故可以直接使用如下命令,不然记得给文件(run.py)加上前缀,例如:/content/drive/MyDrive/Colab Notebooks/Bert-Chinese-Text-Classification-Pytorch/run.py。有点背,开了pro会员,还是背分到了T4,/(ㄒoㄒ)/~~科学上网、拥有谷歌邮箱、谷歌云端硬盘、colab注册。_colab运行github项目

ArcGIS去除黑边方法汇总_图像去黑边-程序员宅基地

文章浏览阅读1.6k次。在使用ArcGIS对影像进行应用的时候,如果出现了黑边,除了影响美观之外,进行镶嵌处理也可能会有问题,这里,我们介绍一下几种ArcGIS去除黑边的方法,希望能够对大家有所帮助。_图像去黑边

推荐文章

热门文章

相关标签