SpringBoot使用 ValidationApi 进行参数校验

我们在接口开发的时候常常需要对参数进行校验,传统的做法是把每个参数拿出来然后进行判空操作,接口一旦多起来,冗余代码非常多。
我们可以通过 ValidationApi 来解决这个问题

	<!--添加依赖-->
	<dependency>
		 <groupId>javax.validation</groupId>
		 <artifactId>validation-api</artifactId>
		 <version>版本号</version>
	</dependency>

如果你的项目是 SpringBoot2 项目就不用添加依赖了,web组件已经内置了这个依赖了, Spring 官方也大量的使用了该Jar包。

@Min 验证 Number 和 String 对象是否大等于指定的值

@Max 验证 Number 和 String 对象是否小等于指定的值

@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内

@Length(min=, max=) 验证字符串长度是否在给定的范围之内

max和min是对你填的“数字”是否大于或小于指定值,这个“数字”可以是number或者string类型。长度限制用length。

原著连接:https://www.jianshu.com/p/6e843e6b25d6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中使用参数校验可以使用JSR-303/JSR-349规范中的注解来实现。如果需要在参数校验进行参数解码操作,可以使用自定义的参数解析器(HandlerMethodArgumentResolver)来实现。 首先,我们需要自定义一个参数解析器,该解析器实现了HandlerMethodArgumentResolver接口,并重写了supportsParameter和resolveArgument方法。 ``` public class DecodeResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter) { return parameter.hasParameterAnnotation(Decode.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class); String parameterValue = request.getParameter(parameter.getParameterName()); return URLDecoder.decode(parameterValue, "UTF-8"); } } ``` 其中,supportsParameter方法判断该参数是否使用了我们自定义的Decode注解,resolveArgument方法则是对参数进行解码操作。 接下来,我们需要定义一个Decode注解,该注解可以加在Controller的方法参数上,用于标识需要进行解码操作的参数。 ``` @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface Decode { } ``` 最后,我们需要将自定义的参数解析器加入到Spring Boot的参数解析器列表中,可以在WebMvcConfigurer中添加自定义的参数解析器。 ``` @Configuration public class WebConfigurer implements WebMvcConfigurer { @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new DecodeResolver()); } } ``` 完成以上操作后,我们就可以在Controller的方法参数使用Decode注解来标识需要进行解码操作的参数了。注意,该解码操作是在参数校验进行的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值