@RequestBody的使用案例代码
作者:理所裆燃 发布时间:2021-07-11 16:46:50
基础知识介绍:
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。
注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、
数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收
参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value
里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。
即:如果参数时放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到;
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或
则形参前 什么也不写也能接收。
注:如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通
过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400。
注:如果参数前不写@RequestParam(xxx)的话,那么就前端可以有可以没有对应的xxx名字才行,如果有xxx名
的话,那么就会自动匹配;没有的话,请求也能正确发送。
追注:这里与feign消费服务时不同;feign消费服务时,如果参数前什么也不写,那么会被默认是
@RequestBody的。
下面介绍下@RequestBody的使用
@RequestBody是用来接收前端传到后端的json字符串的数据请求。
1.@RequestBody直接以String接收前端传过来的json数据:
2.@RequestBody以简单对象接收前端传过来的json数据:
3.@RequestBody以复杂对象接收前端传过来的json数据:
对象中含有数组或者集合,@RequestBody以复杂对象接收前端传过来的json数据。
public CommonResult<?> init(@Valid @RequestBody InitRequest requestPayload) {
// JSON to DTO
InitRequestDto initDto = initRequestMapper.JsonToDtoMapper(requestPayload);
Map<String, Object> resultList = new HashMap<>();
resultList.put(Constants.PREVIEW_DATA_LIST, List);
resultList.put(Constants.CHANGED_BODY, Body);
return CommonResult.success(resultList);
@Getter
@Setter
@ToString
public class InitRequestDto {
// 検索条件名
// -
protected String searchCriteriaName;
// 検索条件
// -
protected String searchCriteria;
protected List<MessageUtilMcbMessagesDetailDto> messageUtilMcbMessagesDetailDtoList;
}
@RestController是组合注解返回json序列化。
@ConfigurationProperties 和 @Value 的区别:
@Configuration 的作用:Configuration用于定义配置类,可替换xml配置文件 , 将配置文件中的自定义属性批量注入到某个Bean中,
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
private int id;
private String name;
private List hobby;
private String[] members;
private Pet pet;
}
@Value 的作用:实现自定义属性的单个注入
@Component
public class Student {
@Value("${person.id}")
private int id;
@Value("${person.name}")
private String name;
private List hobby;
}
@GetMapping和@RequestMapping的区别:
区别如下:
@GetMapping用于将HTTP get请求映射到特定处理程序的方法注解
具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
@PostMapping用于将HTTP post请求映射到特定处理程序的方法注解
具体来说,@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写
@RequestMapping(method = RequestMethod.POST)
来源:https://blog.csdn.net/weixin_51335820/article/details/114500405


猜你喜欢
- 多点触摸技术在实际开发过程中,用的最多的就是放大缩小功能。比如有一些图片浏览器,就可以用多个手指在屏幕上操作,对图片进行放大或者缩小。再比如
- 本文实例为大家分享了闪耀字体效果的具体代码,供大家参考,具体内容如下import android.content.Context;impor
- 本文实例讲述了C#中TreeView实现适合两级节点的选中节点方法。分享给大家供大家参考。具体如下:class TreeViewChecke
- App的小功能点,很简单几十行代码就可以实现主页面代码package com.buildingbuilding;import android
- Java.lang 中自带的注解@Override:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,
- 1、CS、BS架构定义CS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,它的主要特点是交互性强、具有安
- 场景Android中点击按钮启动另一个Activity以及Activity之间传值:https://www.jb51.net/article
- 死信队列:没有被及时消费的消息存放的队列,消息没有被及时消费有以下几点原因:1.有消息被拒绝(basic.reject/ basic.nac
- 摘要: 前面介绍了MapStrut简单用法,MapStrut的最重要的特点就是处理Java中实体与模型间不匹配属性的转换。实体模型有一个Us
- 本文实例为大家分享了Java实现图形界面计算器的具体代码,供大家参考,具体内容如下 代码:import javax.swing.*
- 问题:Kotlin升级引起的类找不到情况[其实跟Kotlin版本无关]java.lang.NoClassDefFoundError: Fai
- 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的
- java控制台输入有如下几个方法1、JDK 1.4 及以下版本读取的方法JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即
- 不记得从哪找的了,修改了部分代码,修复在Android平台下使用时,时区时间格式异常的问题。package cn.aikongmeng.de
- .sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。.csproj:项目文件,创建应用程序所需的引用、数据连接
- 目录1. 应用场景1.1. 保障线程安全1.2. 显示传递参数2. 实现原理3. 注意事项ThreadLocal是线程私有的局部变量存储容器
- 1.结构体类型C语言中的2种类型:原生类型和自定义类型,结构体类型是一种自定义类型。2.结构体使用时先定义结构体类型再用类型定义变量->
- 关于Unity的换装,网上有几篇文章,我之前也简单的描述过实现。不过那个时候只是粗略的试验了下。今天好好梳理了下代码。先上代码(自己的游戏项
- 1.定义字符串字符串常见的构造方式如下:String s1 = "with";String s2 = new Strin
- 基于C#的Aforge类调用简单示例,供大家参考,具体内容如下由题,本程序是使用Aforge类库调用摄像头的demo。功能:1.预览2.前后