1、jar包引入:
<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、编写启动类:
/**
* 生成Api文档
*/
@Configuration
@EnableSwagger2
//是否开启swagger,可根据自己需要要不要开启,可以配置到配置文件中,也可以不配置这个注解
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class Swagger2Config {
/**
* 通过createRestApi函数创建Docket的Bean之后,
* apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。
* select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,
* 本例采用指定扫描的包路径来定义,
* Swagger会扫描该包下所有Controller定义的API,
* 并产生文档内容(除了被@ApiIgnore指定的请求)。
*
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 改成自己要扫描的包路径
.apis(RequestHandlerSelectors.basePackage("com.group.lxm.ceshi"))
.paths(PathSelectors.any())
.build();
}
/**
* 用来创建该Api的基本信息(这些基本信息会展现在文档页面中)
*
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 页面标题
.title("CargoReportServer RESTful-APIs")
// 页面描述
.description("CargoReportServer项目api文档,POST添加,GET获取,PUT修改,DELETE删除")
// 创建人信息
.contact(new Contact("lxm", "", "****************"))
// 版本信息
.version("1.0")
.build();
}
}
3、使用:
书写接口的时候,正确使用swagger相关的注解:
@Api():用在请求的类上,表示对类的说明,也代表了这个类是swagger2的资源
@ApiOperation():用于方法,表示一个http请求访问该方法的操作
@ApiModel():用于响应实体类上,用于说明实体作用
@ApiModelProperty:用在属性上,描述实体类的属性
@ApiImplicitParams:用在请求的方法上,包含多@ApiImplicitParam
@ApiImplicitParam:用于方法,表示单独的请求参数
@ApiParam():用于方法,参数,字段说明 表示对参数的要求和说明
@ApiResponses:用于请求的方法上,根据响应码表示不同响应
@ApiResponse:用在请求的方法上,表示不同的响应
@ApiIgnore():用于类或者方法上,不被显示在页面上
@Profile({"dev", "test"}):用于配置类上,表示只对开发和测试环境有用
eg:
4、访问:
访问项目路径+swagger-ui.html 即可查看所有的我们项目中的接口,选择要测试的接口,点击try it out即可访问接口。