<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${swagger.version}</version> </dependency>
@Configuration @EnableSwagger2 public class SwaggerConfig { /** * 建立一个Docket对象 * 调用select()方法, * 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口 * 经过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此咱们使用any()方法,将全部API都经过Swagger进行文档管理 * @return */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() //标题 .title("Spring Boot中使用Swagger2构建RESTful APIs") //简介 .description("") //服务条款 .termsOfServiceUrl("") //做者我的信息 .contact(new Contact("chenguoyu","","chenguoyu_sir@163.com")) //版本 .version("1.0") .build(); } }
若是不想将全部的接口都经过swagger管理的话,能够将RequestHandlerSelectors.any()
修改成RequestHandlerSelectors.basePackage()
html
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 解决 swagger-ui.html 404报错 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); } }
到这里为止swagger就已经配置完了,能够启动项目,而后访问以下连接便可http://localhost:9000/swagger...java
端口号applicationContext中设置的端口号。git
页面以下github
因为我的感受原生的swagger-ui不太好看,网上提供了swagger-bootstrap-ui。spring
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.3</version> </dependency>
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 解决 swagger-ui.html 404报错 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); // 解决 doc.html 404 报错 registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); } }
这时只须要访问如下连接便可http://localhost:9000/doc.htmlbootstrap
@Api:用在类上,标志此类是Swagger资源api
属性名称 | 备注 |
---|---|
value | 该参数没什么意义,在UI界面上不显示,因此不用配置 |
tags | 说明该类的做用,参数是个数组,能够填多个 |
description | 对api资源的描述 |
@ApiOperation:用在方法上,描述方法的做用数组
属性名称 | 备注 |
---|---|
value | 方法的用途和做用 |
tags | 方法的标签,能够设置多个值 |
notes | 方法的注意事项和备注 |
response | 返回的类型(尽可能不写,由swagger扫描生成) |
@ApiImplicitParams:包装器:包含多个ApiImplicitParam对象列表springboot
属性名称 | 备注 |
---|---|
value | 多个ApiImplicitParam配置 |
@ApiParam:用于Controller中方法的参数说明app
属性名称 | 备注 |
---|---|
name | 属性名称 |
value | 属性值 |
defaultValue | 默认属性值 |
allowableValues | 能够不配置 |
required | 是否属性必填 |
allowMultiple | 文件上传时,是否容许多文件上传 |
@ApiImplicitParam:定义在@ApiImplicitParams注解中,定义单个参数详细信息,若是只有一个参数,也能够定义在方法上
属性名称 | 备注 |
---|---|
name | 参数名 |
value | 参数说明 |
dataType | 参数类型 |
paramType | 表示参数放在哪里 header : 请求参数的获取:@RequestHeader query : 请求参数的获取:@RequestParam path : 请求参数的获取:@PathVariable body : 不经常使用 form : 不经常使用 |
defaultValue | 参数的默认值 |
required | 参数是否必须传 |
@ApiModel:用在类上,表示对类进行说明,用于实体类中的参数接收说明
属性名称 | 备注 |
---|---|
value | 默认为类的名称 |
description | 对该类的描述 |
@ApiModelProperty:在model类的属性添加属性说明
属性名称 | 备注 |
---|---|
value | 属性描述 |
name | 属性名称 |
allowableValues | 参数容许的值 |
dataType | 数据类型 |
required | 是否必填 |
@ApiResponses:包装器:包含多个ApiResponse对象列表
属性名称 | 备注 |
---|---|
value | 多个ApiResponse配置 |
@ApiResponse:定义在@ApiResponses注解中,通常用于描述一个错误的响应信息
属性名称 | 备注 |
---|---|
code | 响应码 |
message | 状态码对应的响应信息 |
response | 默认响应类 Void |
responseContainer | 参考ApiOperation中配置 |
除上面以外有点值得注意的是,若是是上传文件的话,须要把@ApiImplicitParam
中的dataType
属性配置为__File
不然在swagger中会显示为文本框而不是上传按钮