Swagger的使用
作者:互联网
Swagger介绍及集成
1、新建一个SpringBoot Web项目
2、导入相关依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
3、编写一个Hello工程
4、配置Swagger(空的)
@Configuration//表明是一个配置类
@EnableSwagger2 //开启swagger2
public class SwaggerConfig {
}
5、配置Swagger,在配置类里面
①Swagger的Bean实例Docket,配置显示信息
@Bean
public Docket docket(Environment environment){
//题目:在生产环境中不使用swagger,测试环境中使用swagger
//配置Swagger的Docket的Bean实例
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors:配置要扫描接口的方式
//basePackage:指定要扫描的包
//any:扫描全部
//none:不扫描
//withClassAnnotation:扫描类上的注解,需要的参数是一个注解的反射对象
.apis(RequestHandlerSelectors.basePackage("com.joy.swagger.controller"))
//过滤什么路径
//.paths(PathSelectors.ant("/joy/**"))
.build()
;
}
private ApiInfo apiInfo(){
Contact contact = new Contact("joy","http://baidu.com","2272698560@qq.com");
return new ApiInfo(
"joy",
"Api Doc",
"urn:tos",
"http://www.baidu.com",
contact,
"Apache 2.0",
"http://baidu.com",
new ArrayList()
);
}
②配置扫描接口及开关
编写controller层
@RestController
public class HelloController {
@GetMapping(value="/hello")
public String hello(){
return "hello";
}
}
配置Docket
@Bean
public Docket docket(Environment environment){
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev","test");
//题目:在生产环境中不使用swagger,测试环境中使用swagger
//配置Swagger的Docket的Bean实例
//获取项目的环境:通过environment.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:扫描类上的注解,需要的参数是一个注解的反射对象
.apis(RequestHandlerSelectors.basePackage("com.joy.swagger.controller"))
//过滤什么路径
//.paths(PathSelectors.ant("/joy/**"))
.build()
;
}
分组的实现和接口注解及小结
①分组:多加几个Docket
@Bean
public Docket docket1(Environment environment){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(Environment environment){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(Environment environment){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
③编写实体类:User
public class User {
private String username;
private String password;
}
④为了使实体类在mould中显示,在Controller中返回
@RestController
public class HelloController {
@GetMapping(value="/hello")
public String hello(){
return "hello";
}
//只要我们的接口中,返回值存在实体类,他就会被扫描到swagger中
@PostMapping(value = "/user")
public User user(){
return new User();
}
}
⑤可以在实体类中加注解,解释变量、方法、类,显示在页面上就会有解释
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户")
private String username;
@ApiModelProperty("密码")
private String password;
}
⑥也可以在控制类中加接口注解,解释接口
@ApiOperation("用户")
@PostMapping(value = "/user")
public User user(){
return new User();
}
标签:return,扫描,使用,new,Swagger,Docket,public 来源: https://www.cnblogs.com/joxgod/p/15586135.html