参数校验注解@Valid和@RequestBody,@RequestParam(),@ResponseBody的使用

注解@Valid

@Valid是SpringBoot常用注解
@valid注解主要用于数据校验,可定义在两种地方。
1、定义实体类中的属性上,添加不同的注解来完成不同的校验规则。
2、定义在接口类中,在接收参数前添加@Valid注解,开启实体类的校验功能。
在这里插入图片描述

@RequestBody,@RequestParam(),@ResponseBody

参考文章:https://blog.csdn.net/justry_deng/article/details/80972817/
@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的。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
`@RequestBody` 是Spring MVC中一个常用的注解,用于从HTTP请求的正文(通常对应于JSON、XML或form数据)中解析请求体作为方法的参数。如果你想设置`@RequestBody`参数为必填,可以通过几种方式: 1. **使用Java的`javax.validation.constraints.NotNull`注解**: ```java @Validated public class MyRequest { @NotNull(message = "请求体字段不能为空") private String requiredField; // ... 其他字段 } ``` 这里,`@NotNull`注解会确保`requiredField`字段在验证时不能为null。 2. **使用Spring MVC的`@NotEmpty`注解**: ```java public class MyRequest { @NotEmpty(message = "请求体字段不能为空") private String requiredField; } ``` `@NotEmpty`注解对字符串类型特别有效,它会检查字段是否为空(包括null和空字符串)。 3. **使用`@NotBlank`或`@NotBlankOrNull`**,这些注解Spring Boot中提供,对于非空且非空格的字符串更为精确。 4. **在控制器方法上使用`@Valid`注解,结合全局的校验规则**: ```java @PostMapping @ResponseBody public ResponseEntity<?> handle(@Valid MyRequest request, BindingResult result) { if (result.hasErrors()) { return ResponseEntity.badRequest().body(result.getAllErrors()); } // 处理请求 } ``` 如果`BindingResult`中的错误列表不为空,说明至少有一个必填字段未填写,响应码通常是400 Bad Request。 如果你需要客户端验证,还可以考虑使用前端框架(如JavaScript)来配合后端验证,提高用户体验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Orange_橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值