文章目录
- 1.相关依赖
- 2.Swagger配置类
- 3.参数校验对象
- 3.1 Controller对象
- 3.2 学生对象
- 3.3 老师对象
- 3.4 性别枚举
- 3.5 枚举校验
- 3.6 校验异常处理
- 4.参数校验说明
1.相关依赖
org.projectlombok
lombok
com.alibaba
fastjson
1.2.47
org.hibernate.validator
hibernate-validator
6.1.5.Final
io.springfox
springfox-swagger2
2.9.2
com.github.xiaoymin
swagger-bootstrap-ui
1.9.6
2.Swagger配置类
@Configuration
@EnableSwagger2
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("资源管理")
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("学校系统")
.description("学校系统API")
.version("1.0")
.build();
}
}
@SpringBootApplication
@ConditionalOnClass(SpringfoxWebMvcConfiguration.class)
public class Swagger2WebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars
@ExceptionHandler({BindException.class,MethodArgumentNotValidException.class})
public ResponseData bindExceptionHandler(Exception e) {
BindingResult result;
if (e instanceof BindException) {
result = ((BindException) e).getBindingResult();
} else {
result = ((MethodArgumentNotValidException) e).getBindingResult();
}
Map messages = new HashMap<>(16);
// 遍历所有字段的异常信息
if (result.hasErrors()) {
List errors = result.getAllErrors();
for (ObjectError error : errors) {
FieldError fieldError = (FieldError) error;
// 判断是否是某个字段转换失败
if (fieldError.isBindingFailure()) {
messages.put(fieldError.getField(), "数据格式非法!");
}
else {
messages.put(fieldError.getField(), fieldError.getDefaultMessage());
}
}
}
return ResponseData.fail("数据校验出错!", messages);
}
4.参数校验说明
- @NotBlank:验证 String 对象,是否不为null;验证 String 对象,去掉前后空格,长度是否大于0;
- @NotNull :验证对象是否不为null;不检验String 对象长度;
- @Size(min=, max=) :验证对象(String,List,Set,Map)长度是否在给定的范围之内;
- @Pattern:验证 String 对象是否符合正则表达式的规则;
- @Email:验证是否为邮件地址,如果为null,不进行验证,算通过验证;
- @DecimalMax:验证 BigDecimal 对象最大值,如果为null,不进行验证,算通过验证;
- @DecimalMin:验证 BigDecimal 对象最小值,如果为null,不进行验证,算通过验证;
- @Valid:属性为对象,检验对象内部的属性,如果为null,不进行验证,算通过验证;
- @EnumValue:自定义枚举校验;