赞
踩
以下介绍2种方法实现,全部都是以纯注解的方式做参数校验,用if else就太low了。
用knife4j工具,此工具封装了swagger和校验工具validation-api,直接引一个依赖就可以了。
pom依赖;
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-spring-boot-starter</artifactId>
- <version>3.0.2</version>
- </dependency>
swagg配置类;(可以不配置,使用默认的)
- import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.service.Contact;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
- import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
- /**
- * Swagger2配置类(生成接口文档)
- *
- * @author 白豆五
- * @version 2023/1/21
- * @since JDK8
- */
- @Configuration
- @EnableSwagger2 //开启swagger2注解支持
- @EnableKnife4j //开启Knife4j注解支持
- public class SwaggerConfig {
-
- @Bean
- public Docket webApiConfig() { //生成接口文档的清单
- // 文档类型
- return new Docket(DocumentationType.SWAGGER_2)
- .groupName("webApi")
- .apiInfo(webApiInfo())
- .select()
- //指定controller包扫描路径
- .apis(RequestHandlerSelectors.any())
- .paths(PathSelectors.any())
- .build();
- }
-
- //配置api信息
- private ApiInfo webApiInfo() {
- return new ApiInfoBuilder()
- .title("网站-API文档")
- .description("本文档描述了xxx管理系统微服务接口定义")
- .version("1.0")
- .contact(new Contact("白豆五", "https://blog.csdn.net/qq_46921028", "13212341234@163.com"))
- .build();
- }
-
- }

访问页面:http://127.0.0.1:798/doc.html
后面就可以在实体类或controller参数中使用校验注解了,相关注解见文章末尾
validation-api工具
pom依赖:
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- </dependency>
引入此依赖,项目中就可以使用参数校验注解了
示例:
get请求:
post请求:
@NotEmpty来做参数校验返回 400,并且不显示具体 message 解决
validation-api工具相关注解:
@RequestParam注解常用属性:
- //value:注释说明,defaultValue :默认值,required :是否必填
- @ApiParam(value = "合同id", defaultValue = "", required = false)
@RequestBody注解参数校验:
- public void vipMobileCode(@RequestBody @Validated ShareUserVo userVo) {
-
- }
- @Data
- @ApiModel(value="测试", description="测试")
- public class ShareUserVo implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- @NotNull(message = "操作不能为空")
- @ApiModelProperty(required = true, value = "1会员邀请,2师徒邀请")
- private Integer type;
-
- //required = true 用来控制是否必填,可有可无和@NotNull重复
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。