1、新建一个springboot项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.spring</groupId>
<artifactId>springBoot-demo1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2、引入swagger依赖
<dependency><!--添加Swagger依赖 -->
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency><!--添加Swagger-UI依赖 -->
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
3、添加swagger配置类
package com.bizzan.bitrade.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
@Configuration //配置类
@EnableSwagger2// 开启Swagger2的自动配置
public class SwaggerConfig {
@Bean
public Docket docket() {
// 设置要显示swagger的环境
// 通过 enable() 接收此参数判断是否要显示
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
.select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
// .apis(RequestHandlerSelectors.basePackage("com.bizzan.bitrade.service")) // 扫描指定包下的接口
.apis(RequestHandlerSelectors.any()) // 扫描所有接口
//配置你想在那个controller层生产接口文档 any()表示扫描所有
.paths(PathSelectors.any())
// 配置如何通过path过滤,即这里只扫描请求以/kuang开头的接口
.build();
}
//配置文档信息
private ApiInfo apiInfo() {
Contact contact = new Contact("一个项目", "xxx", "xxx@126.com");
return new ApiInfo(
"交易所", // 标题
"各种币的交易", // 描述
"v1.0", // 版本
"", // 组织链接
contact, // 联系人信息
"xx 2.0 许可", // 许可
"xx", // 许可连接
new ArrayList<>()// 扩展
);
}
}
常用注解说明
@Api:用在类上,说明类的作用
tags:“标签,可以在UI界面上看到的注解”
value:url的路径值,在类上使用的路由,如果类上没有配置,此注解无效
position:如果配置多个Api 想改变显示的顺序位置
protocols:协议
hidden:配置为true 将在文档中隐藏
produces:返回的文件的MIME类型,例如application/json,application/xml
consumes:需要的文件的MIME类型,
authorizations:认证
@ApiSort:排序
value:int值
@ApiOperation:用在方法上,用来给API增加方法说明。
value=“说明方法的用途、作用”
notes=“方法的备注说明”
tags:如果设置这个值、value的值会被覆盖
description:对api资源的描述
basePath
position
protocols
hidden
response:返回的对象,例如(Bean.class)
responseContainer:返回的内容,有效的 “List”, “Set” or “Map”.,其他无效
httpMethod:
code :默认为200
extensions:扩展属性
produces:返回的文件的MIME类型,例如application/json,application/xml
consumes:需要的文件的MIME类型,
ignoreJsonView:忽略的json
@ApiImplicitParam:用来注解来给方法入参增加说明。
paramType:参数存在的位置,该参数不能乱写,否者测试时会调用失败
header:请求参数放置于Request Header,使用@RequestHeader获取
query:请求参数放置于请求地址,使用@RequestParam获取
path:(用于restful接口)–>请求参数的获取:@PathVariable
body:@RequestBody
form:表单提交
name:参数名
dataType:参数类型
required:参数是否必须传(bool类型)
value:说明参数的意思
defaultValue:参数的默认值
allowableValues:允许的值
allowMultiple:是否允许多选
allowEmptyValue:允许为空?
readOnly:只读?
@ApiImplicitParams : 用在方法上包含一组参数说明。
ApiImplicitParam[] value():包含ApiImplicitParam
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:响应类
@ResponseHeader:响应头设置
name:响应名称
description:描述信息
response:响应类
responseContainer:响应内容
@ApiModel:一般用在实体类,描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候
@ApiModelProperty:描述一个model的属性
示例:
@ApiModel(value = "日志")
public class AccessLogBean implements Serializable {
/**
* 编号
*/
@ApiModelProperty("编号")
@Setter
@Getter
private int id;
/**
* 响应码
*/
@ApiModelProperty("响应码")
@Setter
@Getter
private String code = "";
/**
* 请求主机地址
*/
@ApiModelProperty("请求主机地址")
@Setter
@Getter
private String ip = "";
@ApiParam:使用在参数上(和ApiImplicitParam使用其一即可)
参数 意义
- name 属性名称
- value 属性值
- defaultValue 默认属性值
- allowableValues 可以不配置
- required 是否属性必填
- access
- allowMultiple 默认为false
- hidden 隐藏该属性
- example
swagger配置文件详解
swagger:
production: false //如果此项设置为true,则swagger页面隐藏
basic:
enable: true //此项设置为true表示开启账号密码验证
username: admin //enable为true时对应的登陆账号
password: admin //enable为true时对应的登陆密码