Swagger整合spring开发
1.swagger介绍
一款强大的接口文档工具,主要作用于前后端分离的一个接口工具,是你项目开发中必不可少的api文档工具,本次swagger只针对初学者快速入门,容易上手
2.maven加入依赖
<!--swagger 整合 springMVC-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
我用的是2.7版本,可以根据各自需求更换对应版本
3.创建Swagger工具类
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket controllerApi() {
return new Docket(DocumentationType.SWAGGER_2)
//接口分组名称
.groupName("controller")
.apiInfo(apiInfo())
//查询所有接口
.select().
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//这些是页面额外的信息,稍微做个了解即可,等下看运行后的页面
.title("HTTP API")
.description("管理端接口")
.termsOfServiceUrl("http://springfox.io")
.contact("大山里的程序猿")
.license("Apache license Version 2.0")
// .licenseUrl("https://github.com/springfox/springfox/")
.version("2.0")
.build();
}
}
运行服务器后,我的端口号是8080,根据各自的端口修改
访问http://localhost:8080/manager/swagger-ui.html#/
如果你出现如下页面表示成功了
4.指定暴露接口
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket controllerApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("controller")
.apiInfo(apiInfo())
.select()
//指定只暴露ProductController类的接口
.apis(RequestHandlerSelectors.basePackage(ProductController.class.getPackage().getName()))
//只暴露ProductController类的/products/*的接口
.paths(PathSelectors.ant("/products/*"))
.build();
}
执行查看结果
添加controller接口组
只需再多写一个bean就好
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket controllerApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("controller")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage(ProductController.class.getPackage().getName()))
.paths(PathSelectors.ant("/products/*"))
.build();
}
@Bean
public Docket defaultApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("default")
.apiInfo(apiInfo())
.select().apis(RequestHandlerSelectors.basePackage(MyErrorController.class.getPackage().getName()))
.build();
}
执行结果,点击进行切换
5.页面介绍
6.常用注解
1. @ApiOperation
作用在controller接口方法上
@ApiOperation(value = "添加产品",notes = "输入对应的产品信息进行添加")
@PostMapping
public Product addProduct(@RequestBody Product product){
LOG.info("创建产品,参数:{}",product);
Product result = service.addProduct(product);
LOG.info("创建产品,结果:{}",result);
return result;
}
2.@ApiModelProperty
作用在实体类上
更直观的让别人读懂这个对象是干嘛的怎么用
3.@Api
作用在controller类上
@Api(tags = "product",description = "产品相关")
public class ProductController {
7.国际化页面
在swagger ui 下有一个静态页面,便是我们现在所使用的
如果你不喜欢英文,想更换其他语言,那当然是可以的,他的lang包下有多种语言的js文件
我们调换成中文的来做一个示例
在静态资源类路径下创建两个目录 MATE-INF、resources
赋值swagger-ui.html
在html中加入两条语句
//转国际化js文件
<script src='webjars/springfox-swagger-ui/lang/translator.js' type='text/javascript'></script>
//中文语言包
<script src='webjars/springfox-swagger-ui/lang/zh-cn.js' type='text/javascript'></script>
执行结果