当前位置: 代码迷 >> 综合 >> @RequestBody @RequestParam @ModelAttribute学习记录
  详细解决方案

@RequestBody @RequestParam @ModelAttribute学习记录

热度:38   发布时间:2023-12-23 12:30:14.0

前言

最近做的一个功能里面接触到了Spring相关的一些知识点,目前还没系统学Spring,先根据遇到的问题零碎学习并进行总结。后续系统学习Spring后再整体做总结。

开发这个功能遇到一个问题,原本接口参数中有@RequestBody,后续需求变更又加了@RequestParam,测试的时候报Json parser error的错误,网上查询说是这两个东西不能同时存在一个方法的参数列表中(json无法与form兼容),后面将@RequestBody改为@ModelAttribute解决问题。网上查询学习这三个注解 现进行简单记录。

知识点

当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的ContentType指定。分为以下几种情况:
1. application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。
2. multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)一般使用@RequestParam处理
3. application/json、application/xml等格式的数据,必须使用@RequestBody来处理

4. 如果同步application/json和form,需要将json格式换为application/x-www-form-urlencoded

具体参考:https://www.cnblogs.com/zeroingToOne/p/8992746.html

拓展·Swagger

之前springboot项目测试使用的是自带的test类,在此次项目功能实现中由于是个web项目,需要与前端交互,使用的是Swagger工具。Swagger UI提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求,支持在线导入描述文件和本地部署UI项目。项目启动后使用swagger-ui测试接口。

swagger简介:https://www.jianshu.com/p/349e130e40d5

swagger常用注解:https://blog.csdn.net/wyb880501/article/details/79576784

swagger使用样例:https://blog.csdn.net/m0_37499059/article/details/79532776

总结

建立详尽的知识体系后,以实际开发中的问题为索引,不断学习充实自身技术知识体系。

  相关解决方案