Swagger2可以快速帮助我们编写最新的API接口文档,间接提升团队开发的沟通效率。
1.依赖
<!--引入Swagger2依赖-->
<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>
2.配置一个swagger的配置类(注意:需要继承WebMvcConfigurationSupport,重写addResourceHandlers方法,将不拦截的路径放入,不然会报404错误)
@Configuration
public class SwaggerConfig extends WebMvcConfigurationSupport
{
@Bean//swagger所有的功能都集中在Docket类中,该方法的作用在于获取Docket对象并交于spring管理
public Docket docket(){
Docket docket=new Docket(DocumentationType.SWAGGER_2);
return docket;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解决静态资源无法访问
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
// 解决swagger无法访问
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
// 解决swagger的js文件无法访问
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
3.在主类上开启swagger的注解驱动
@SpringBootApplication
@EnableSwagger2//开启Swagger的注解
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
4.编写测试代码
5.测试:http://localhost:8080/swagger-ui.html
6.修改swagger配置类的内容(看需求)
@Bean//swagger所有的功能都集中在Docket类中,该方法的作用在于获取Docket对象并交于spring管理
public Docket docket(){
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.groupName("springboot-swagger")
.apiInfo(getInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.yc.controller"))
.build();
return docket;
}
//接口文档的描述
private ApiInfo getInfo() {
Contact DEFAULT_CONTACT = new Contact("大帅逼", "https://www.liudehua.com", "liudehua@qq.com");
ApiInfo DEFAULT = new ApiInfo("springboot-swagger整合API",
"springboot-swagger整合API", "v1.0",
"https://www.yc.com", DEFAULT_CONTACT,
"大帅逼集团",
"http://www.liudehua.com", new ArrayList());
return DEFAULT;
}
- 7.Swagger2常用的注解
@Api(tags=):加载在Controller类上,对接口类进行说明
@ApiOperation(value=):加载在接口方法上,对接口方法进行说明,
@ApiImplicitParams(value={@ApiImplicitParam(value=,name=)}):加载在方法上,对方法所有参数进行概括
@ApiImplicitParam(value=,name=):对单个参数进行说明
@ApiModel(value=):加载在实体类上,对实体类进行说明
@ApiModelProperty(value=):加载在实体类属性上,对属性进行说明