创建Config类
使用注解:
@Configuration @EnableSwagger2
http://localhost:8080/swagger-ui.html
配置Swagger
Swagger的bean实例Docket;
//配置Swagger的Docket的bean实例
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}
//配置Swagger信息=apiInfo
private ApiInfo apiInfo() {
Contact contact = new Contact("haha", "https://baidu.com/", "1507852088@qq.com");
return new ApiInfo(
"Swagger Api文档",
"Api Documentation",
"v1.0",
"https://baidu.com/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
Swagger配置扫描接口
Docket.select()
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.study.swagger.controller"))
//RequestHandlerSelectors,配置要扫描接口的方式
//basePackage:指定要扫描的包
//any():扫描全部
//none():不扫描
//withClassAnnotation():扫描类上面的注解,参数是一个注解的反射对象
//withMethodAnnotation():扫描方法上的注解
//.paths:过滤什么路径
.build();
}
切换选择开发版本或者发布版本环境
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev","test");
//通过environment.acceptsProfiles判断是否处在自己设定的环境当中
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(flag)
//enable是否启动Swagger,如果为False,则Swagger不能在浏览器中访问
.select()
.apis(RequestHandlerSelectors.basePackage("com.study.swagger.controller"))
//.paths(PathSelectors.ant("/study/**"))
.build();
注释:(重点)
实体类:
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("密码")
public String password;
}
controller:
//Operation接口
@Api(tags = "这样写就对了")
@RestController
public class HelloController {
//默认请求/error
@RequestMapping(value = "/hello")
public String hello() {
return "hello";
}
@PostMapping(value = "/user")
public User user() {
return new User();
}
//Operation接口,放在方法上
@ApiOperation("bye控制类")
@RequestMapping(value = "/bye")
public String bye(@ApiParam("用户名") String username) {
return "bye"+username;
}
@ApiOperation("Post测试类")
@RequestMapping(value = "/post")
public User post(@ApiParam("用户名") User user) {
return user;
}
}
总结:
1.我们可以通过swagger给一些比较难理解的属性或者接口增加注释信息。
2.接口文档实时更新
3.可以在线测试