Wetts's blog

Stay Hungry, Stay Foolish.

0%

SpringMVC-整合Swagger2

在SpringMVC项目中使用Swagger2。

添加Swagger2依赖

pom.xml中添加

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>

创建Swagger2配置类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Configuration
@EnableWebMvc //NOTE: Only needed in a non-springboot application
@EnableSwagger2
public class MySwaggerConfig {

@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.paths(PathSelectors.any())
.build();
}

private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringMVC 中使用Swagger2构建RESTful APIs")
.description("SpringMVC 中使用Swagger2构建RESTful APIs")
.termsOfServiceUrl("https://wetts.github.io/")
.contact(new Contact("wetts", "https://wetts.github.io/", "zhang.wetts@163.com"))
.version("1.0")
.build();
}
}

配置Spring配置文件

在SpringMVC的配置文件中添加

1
2
3
4
<bean class="com.wetts.restful.demo.MySwaggerConfig"></bean>

<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>

添加Controller中内容

@Api

用在类上,说明该类的作用

@Api(value = "UserController", description = "用户相关api")

@ApiOperation

用在方法上,说明方法的作用

@ApiOperation(value = "查找用户", notes = "查找用户", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

@ApiImplicitParams

用在方法上包含一组参数说明

@ApiImplicitParam

用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

  • paramType:参数放在哪个地方
  • path(用于restful接口)–>请求参数的获取:@PathVariable
  • name:参数名
  • dataType:参数类型
  • required:参数是否必须传
  • value:参数的意思
  • defaultValue:参数的默认值
    1
    2
    3
    @ApiImplicitParams({
    @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
    })

@ApiResponses

用于表示一组响应

@ApiResponse

用在@ApiResponses中,一般用于表达一个错误的响应信息

  • code:数字,例如400
  • message:信息,例如”请求参数没填好”
  • response:抛出异常的类
1
2
3
@ApiResponses(value = {  
@ApiResponse(code = 400, message = "No Name Provided")
})

@ApiModel

描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)

@ApiModel(value = "用户实体类")

@ApiModelProperty

描述一个model的属性

@ApiModelProperty(value = "登录用户")

启动项目后访问路径

http://localhost:8080/swagger-ui.html访问路径

http://localhost:8080/v2/api-docs 文档json路径