本文将介Swagger2,它可以轻松组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API,而不再需要Postman。
Swagger2注解说明
Swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。
1 | @Api:修饰整个类,描述Controller的作用 |
@Api:用在请求的类上,表示对类的说明
- tags=”说明该类的作用,可以在UI界面上看到的注解”
- value=”该参数没什么意义,在UI界面上也看到,所以不需要配置”
@ApiOperation:用在请求的方法上,说明方法的用途、作用
- value=”说明方法的用途、作用”
- notes=”方法的备注说明”
@ApiImplicitParams:用在请求的方法上,表示一组参数说明
- @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
- name:参数名
- value:参数的汉字说明、解释
- required:参数是否必须传
- paramType:参数放在哪个地方
- header –> 请求参数的获取:@RequestHeader
- query –> 请求参数的获取:@RequestParam
- path(用于restful接口)–> 请求参数的获取:@PathVariable
- body(不常用)
- form(不常用)
- dataType:参数类型,默认String,其它值dataType=”Integer”
- defaultValue:参数的默认值
- @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
@ApiResponses:用在请求的方法上,表示一组响应
- @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
- code:数字,例如400
- message:信息,例如”请求参数没填好”
- response:抛出异常的类
- @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
@ApiModel:用于响应类上,表示一个返回响应数据的信息,(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
- @ApiModelProperty:用在属性上,描述响应类的属性
Swagger2注解示例
示例1:
1 | @Api(tags="APP用户注册Controller") |
示例2:
1 | @ApiOperation(value="用户注册",notes="手机号、密码都是必输项,年龄随边填,但必须是数字") |
示例3:
1 | @ApiOperation(value = "select1请求",notes = "多个参数,多种的查询参数类型") |
示例4:
1 | import io.swagger.annotations.ApiModel; |
Swagger2整合实践
首先打开Intellij Idea工具创建Spring Initializr项目。
1.添加依赖
1 | <dependency> |
2.编写Swagger配置类
其实这个配置类,只要了解具体能配置哪些东西就好了,毕竟这个东西配置一次之后就不用再动了。 特别要注意的是里面配置了api文件也就是controller包的路径,不然生成的文档扫描不到接口。
1 | package com.example.swagger2demo; |
用@Configuration注解该类,等价于XML中配置beans;用@Bean标注方法等价于XML中配置bean。
3.创建Restful API
- 一个UserController类提供访问接口
1 | package com.example.swagger2demo.controller; |
- Json格式输出类 JsonResult.class
1 | package com.example.swagger2demo.bean; |
- 实体User.class
1 | package com.example.swagger2demo.bean; |
4.启动类添加@EnableSwagger2注解
1 | package com.example.swagger2demo; |
5.访问Swagger2文档
启动SpringBoot项目,访问 http://localhost:8080/swagger-ui.html
Swagger2汉化过程
swagger-ui/dist/lang/translator.js文档中有这样一段描述:
To enable translation you should include one of language-files in your index.html after
1
2 > <script src='lang/translator.js' type='text/javascript'></script>
>
For example -
1
2 > <script src='lang/ru.js' type='text/javascript'></script>
>
也就是说,只要添加翻译器和对于的译文JS就可以显示中文界面了。
使用IDEA 双击Shift 快速找到swagger-ui.html 入口文件,完全拷贝内容在项目中创建一模一样的文件swagger-ui.html。
注意文件路径必须为src\main\resources\META-INF\resources\swagger-ui.html。
针对中文的本地化,在swagger-ui.html文件中添加以下两行标签:
1 | <!--国际化操作:选择中文版 --> |
完整内容为:
1 | <!DOCTYPE html> |
再次启动项目,访问 http://localhost:8080/swagger-ui.html,看看显示效果:
可将zh-cn.js文件复制到项目中,进一步定制翻译内容,注意zh-cn.js与swagger-ui.html的相对路径。
1 | \src\main\resources\META-INF\resources\swagger-ui.html |
zh-cn.js文件全部内容:
1 | 'use strict'; |