java进行参数快捷校验,ehi-verification

堵茂勋
2023-12-01

ehi-verification

项目介绍

一个好用的快速的参数校验框架

支持直接调用校验并提供Spring-webmvc拦截器对请求参数进行校验

软件架构

没啥架构,不强制依赖第三方Jar包

更新记录

1.0.3 解决返回JSON多出逗号的问题

1.0.4

1.直接以@RequestBody 形式获取参数的校验

2.新增BodyReaderFilter可协助解决流只能读取一次的问题

安装教程

PS:最新版已同步至Maven中央仓库

com.yuxuan66

ehi-verification

1.0.6

如非Maven项目直接打包后找到Jar放入项目中即可

使用说明

首先我们先来认识几个常用的类和注解

Verification,Param,Len

EhiVerification,VerificationResult,Result,ConstFormat

Param:标记一个参数要进行校验

参数:

value(String)=字段名称

require(boolean)=是否需要(默认为需要)

asFor(String)=必须跟asFor的字段内容一致

nullFor(String)=nullFor的字段内容和当前内容不能同时为空

nullMsg(String)=字段为空的错误提示,默认使用全局提示

errorMsg(String)=字段校验不通过的错误提示,默认使用全局提示

pattern(String)=用来校验的正则

len(@Len)=长度校验

Verification:标记一个类,Bean只有此注解才会生效

参数:

params(@Param)=字段列表

@Verification(params = {

@Param(value = "name", require = false, len = @Len(min = 10, max = 20),errorMsg = "用户名必须为10~20位字符"),

@Param(value = "password"),

@Param(value = "email", pattern = ConstFormat.EMAIL)

})

public class User extends HashMap {

private String name;

private String password;

private String email;

@Param(value = "age")

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

demo

public static void main(String ...args){

User user = new User();

user.setName("1111111111");

user.setEmail("eqeq@qq.com");

user.setPassword("dsadsa");

VerificationResult verificationResult = new EhiVerification().verification(user);

System.out.println(verificationResult.isVerification());

System.out.println(verificationResult.getErrorMsg());

}

//校验一个实体 实体可以集成Map会自动区分

VerificationResult verificationResult = new EhiVerification().verification(user);

返回一个校验结果

verificationResult.isVerification();//返回是否有校验不通过字段

verificationResult.getErrorMsg();//返回校验不通过的提示语,如上行代码返回true则此代码返回空字符串

下面我们来学习一下高级的使用方式,这里我们使用springboot进行集成

拦截器配置

package com.km66.knowledge.support.config.web;

import com.km66.knowledge.support.interceptor.AuthInterceptor;

import com.km66.knowledge.support.resolver.DictArgumentResolver;

import com.yuxuan66.ehi.verification.core.EhiVerification;

import com.yuxuan66.ehi.verification.interceptor.ParamInterceptor;

import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.context.request.RequestContextListener;

import org.springframework.web.method.support.HandlerMethodArgumentResolver;

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration

public class WebMvcConfig implements WebMvcConfigurer {

@Override

public void addInterceptors(InterceptorRegistry registry) {

//创建核心校验器

EhiVerification ehiVerification = new EhiVerification();

//添加参数拦截器

registry.addInterceptor(new ParamInterceptor(ehiVerification));

}

}

Controller配置

@RequestMapping(path = "updateAccessTokenByRefreshToken", method = RequestMethod.POST)

@ResponseBody

@Verification(params = {

@Param(value = "username", len = @Len(min = 10, max = 20),errorMsg = "用户名格式不正确",nullMsg = "用户名必须输入"),

@Param(value = "email" ,pattern = ConstFormat.EMAIL),

@Param(value = "password")

})

public RespEntity updateAccessTokenByRefreshToken(@RequestParam Map params) {

try {

return usersService.updateAccessTokenByRefreshToken(params);

} catch (Exception e) {

logger.error("服务器异常", e);

return RespEntity.fail();

}

}

交流群:795272647

参与贡献

Fork 本项目

新建 Feat_xxx 分支

提交代码

新建 Pull Request

 类似资料: