SpringBoot-整合SwaggerAPI框架-13
SwaggerAPI框架
1.配置
- 导入pom.xml
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
- HelloController
@RestController
public class HelloController {
@RequestMapping(value = "/hello")
public String hello(){
return "hello";
}
}
- 配置Swagger(在SwaggerConfig进行如下配置即可自定义swagger-ui.html页面)
@Component//等于Component
@EnableSwagger2//开启swagger2
public class SwaggerConfig {
//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
//1. 配置Swagger信息需要apiinfo()
private ApiInfo apiInfo(){
//作者信息
Contact contact = new Contact("1f", "qwq", "xxxx@xx.xom");
return new ApiInfo("1f的swaggerAPI文档",
"1f",
"1.0",
"urn:tos",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
2.Swagger扫描接口
- 需要在docket()方法中修改
//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(Environment environment){
//可以设置要显示的Swagger环境(实现开发环境使用Swagger,而生产环境不使用Swagger)
Profiles profiles = Profiles.of("dev","test");
//通过environments.acceptsProfiles判断是否处在自己设置的环境中
boolean flag = environment.acceptsProfiles(profiles);
//获取项目的环境:
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否启动Swagger false则不能启动不能再浏览器中访问 true就能在浏览器中访问
.enable(flag)
.select()
//RequestHandlerSelectors:配置要扫描接口的方式
//basePackage:指定要扫描的包
//any():扫描全部
//none():不扫描
//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation:扫描方法的注解
//不常用.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))//只会扫描类上有RestController注解的
.apis(RequestHandlerSelectors.basePackage("com.sli.controller"))
//paths():过滤什么路径,里面的方法和上面的相同
//.paths(PathSelectors.ant("/sli/**"))
.build(); //build建造者模式
}
- 实现开发环境中使用Swagger,运行上线的时候不使用Swagger
public Docket docket(Environment environment){
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev","test");
//获取项目的环境:判断是否处在自己设定的环境中
boolean flag = environment.acceptsProfiles(profiles);
}
.enable中也需要加入(flag)
以下是两个环境,dec为8081,pro为8082,在application.properties中配置了spring.profiles.active=dev的时候,访问:http://localhost:8081/swagger-ui.html#/hello-controller 会显示界面;
spring.profiles.active=pro的时候访问:http://localhost:8082/swagger-ui.html#/hello-controller 不会显示界面;

3. 如何给API文档分组
- 给api文档分组
.groupName("sli") - 如何配置多个组(多个环境)
//配置多个Docket实例
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
启动访问了页面之后就可以看到
3. 实体类配置
- 新建一个实体类
@ApiModel("用户实体")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("密码")
public String password;
}
- 常用的注解
- @Api(模块的说明):作用在模块上
- @ApiOperation(接口的说明):作用在接口上
- @ApiModel(模型类上的说明):作用自模型类上
- @ApiParam(参数说明):作用在参数,方法和字段上

浙公网安备 33010602011771号