前后端接口联调需要API文档,我们经常会使用工具来生成。之前经常使用Swagger来生成,最近发现一款好用的API文档生成工具smart-doc , 它有着很多Swagger不具备的特点,推荐给大家。
SpringBoot实战电商项目mall(50k+star)地址:https://github.com/macrozheng/mall
聊聊Swagger
在我们使用Swagger的时候,经常会需要用到它的注解,比如@Api 、@ApiOperation 这些,Swagger通过它们来生成API文档。比如下面的代码:
Swagger对代码的入侵性比较强,有时候代码注释和注解中的内容有点重复了。有没有什么工具能实现零注解入侵,直接根据代码注释生成API文档呢?smart-doc 恰好是这种工具!
smart-doc简介
smart-doc 是一款API文档生成工具,无需多余操作,只要你规范地写好代码注释,就能生成API文档。同时能直接生成Postman调试文件,一键导入Postman即可调试,非常好用!
smart-doc 具有如下优点:
生成API文档
接下来我们把smart-doc 集成到SpringBoot项目中,体验一下它的API文档生成功能。
- 首先我们需要在项目中添加
smart-doc 的Maven插件,可以发现smart-doc 就是个插件,连依赖都不用添加,真正零入侵啊;
<plugin>
<groupId>com.github.shalousun</groupId>
<artifactId>smart-doc-maven-plugin</artifactId>
<version>2.2.8</version>
<configuration>
<configFile>./src/main/resources/smart-doc.json</configFile>
<projectName>mall-tiny-smart-doc</projectName>
</configuration>
</plugin>
- 接下来在项目的
resources 目录下,添加配置文件smart-doc.json ,属性说明直接参考注释即可;
{
"serverUrl": "http://localhost:8088",
"outPath": "src/main/resources/static/doc",
"isStrict": false,
"allInOne": true,
"createDebugPage": false,
"packageFilters": "com.macro.mall.tiny.controller.*",
"style":"xt256",
"projectName": "mall-tiny-smart-doc",
"showAuthor":false,
"allInOneDocFileName":"index.html"
}
- 打开IDEA的Maven面板,双击
smart-doc 插件的smart-doc:html 按钮,即可生成API文档;
- 此时我们可以发现,在项目的
static/doc 目录下已经生成如下文件;
- 运行项目,访问生成的API接口文档,发现文档非常详细,包括了请求参数和响应结果的各种说明,访问地址:http://localhost:8088/doc/index.html
- 我们回过来看下实体类的代码,可以发现我们只是规范地添加了字段注释,生成文档的时候就自动有了;
public class PmsBrand implements Serializable {
private Long id;
private String name;
private String firstLetter;
private Integer sort;
private Integer factoryStatus;
private Integer showStatus;
private Integer productCount;
private Integer productCommentCount;
private String logo;
private String bigPic;
private String brandStory;
}
- 再来看下Controller中代码,我们同样规范地在方法上添加了注释,生成API文档的时候也自动有了;
@Controller
@RequestMapping("/brand")
public class PmsBrandController {
@Autowired
private PmsBrandService brandService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
@PreAuthorize("hasRole('ADMIN')")
public CommonResult<CommonPage<PmsBrand>> listBrand(@RequestParam(value = "pageNum", defaultValue = "1")
Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "3")
Integer pageSize) {
List<PmsBrand> brandList = brandService.listBrand(pageNum, pageSize);
return CommonResult.success(CommonPage.restPage(brandList));
}
}
{
"responseBodyAdvice":{
"className":"com.macro.mall.tiny.common.api.CommonResult"
}
}
- 我们也经常会用枚举类型来封装状态码,在
smart-doc.json 中添加如下配置即可;
{
"errorCodeDictionaries": [{
"title": "title",
"enumClassName": "com.macro.mall.tiny.common.api.ResultCode",
"codeField": "code",
"descField": "message"
}]
}
- 有时候我们也会想给某些接口添加自定义请求头,比如给一些需要登录的接口添加
Authorization 头,在smart-doc.json 中添加如下配置即可;
{
"requestHeaders": [{
"name": "Authorization",
"type": "string",
"desc": "token请求头的值",
"value":"token请求头的值",
"required": false,
"since": "-",
"pathPatterns": "/brand/**",
"excludePathPatterns":"/admin/login"
}]
}
- 配置成功后,在接口文档中即可查看到自定义请求头信息了。
使用Postman测试接口
我们使用Swagger生成文档时候,是可以直接在上面测试接口的,而smart-doc 的接口测试能力真的很弱,这也许是它拥抱Postman的原因吧,毕竟Postman是非常好用的接口测试工具,下面我们来结合Postman使用下!
smart-doc 内置了Postman的json 生成插件,可以一键生成并导入到Postman中去,双击smart-doc:postman 按钮即可生成;
- 此时将在项目的
static/doc 目录下生成postman.json 文件;
- 将
postman.json 文件直接导入到Postman中即可使用;
- 导入成功后,所有接口都将在Postman中显示,这下我们可以愉快地测试接口了!
总结
smart-doc 确实是一款好用的API文档生成工具,尤其是它零注解侵入的特点。虽然它的接口测试能力有所不足,但是可以一键生成JSON文件并导入到Postman中去,使用起来也是非常方便的!
参考资料
官方文档:https://gitee.com/smart-doc-team/smart-doc/wikis/HOME
项目源码地址
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-smart-doc
本文 GitHub https://github.com/macrozheng/mall-learning 已经收录,欢迎大家Star!
|