谁说生成api文档就必需要定义注解? 谁说生成接口请求和返回示例必需要在线? 用代码去探路,不断尝试更多文档交付的可能性。 若是代码有生命,为何不换种方式和它对话!
没有背景、就本身作本身的背景
在当今各类盛行的先后端分离、restful service开发过程当中,接口文档是必不 可少的。对于先后端分离的开发中,后端开发须要将接口写好后须要告诉前端工程师接口的请求参数、响应示例等重要信息,而对于对外暴露的restful接口服务,咱们提供接口也是须要具有相同的接口文档的。html
可是对于后端工程师来说,写接口文档将变成一个很大的工做量,虽然如今有相似apidoc、swagger这样的主流接口文档生成工具,可是若是实际用过,会发现这些工具不能知足实际需求,这里拿swagger为例,这个工具最大的优势能是提供在线的api文档,可是它天生就有很强的代码侵入性,要获得一个基本知足需求的api接口文档,必须在代码中使用swagger自定义的注解。这其实给开发人员增长学习成本和工做量,而且就算你使用大量的注解,有许多接口仍是没法知足。所以不得不去作一次接口文档工具从新启航探索,smart-doc应允而生,用代码去探路,消除繁杂的注解,发现天下没有难写的接口文档。前端
简约而不简单
smart-doc是基于java开发用于解决java web restful接口文档书写难和生成难的问题,固然api-doc也是一款零注解彻底基于源代码接口定义,使用java标准注释生成接口文档的工具。而且smart-doc代码也是彻底开源的。目前生成的文档格式为markdown。java
github仓库地址连接github
一个都不能少
效率是作好工做的灵魂。——切斯特菲尔德
只有看到本身的不足,才能得到进步。
<dependency> <groupId>com.github.shalousun</groupId> <artifactId>smart-doc</artifactId> <version>1.7.5</version> </dependency>
/** * @author yu 2018/8/4. */ public class SimpleUser { /** * 用户名 */ @NotNull private String username; /** * 密码 */ private String password; /** * 昵称 */ private String nickName; /** * 电话 */ private String mobile; }
/** * 用户信息操做接口 * @author yu 2018/8/4. */ @RestController @RequestMapping("/user") public class UserController { /** * 添加用户 * @param user * @return */ @PostMapping("/add") public List<SimpleUser> addUser(@RequestBody SimpleUser user){ return null; } }
启动文档生成web
/** * 包括设置请求头,缺失注释的字段批量在文档生成期使用定义好的注释 */ @Test public void testBuilderControllersApi() { ApiConfig config = new ApiConfig(); config.setServerUrl("http://localhost:8080"); config.setStrict(true); config.setOutPath("d:\\md"); //不指定SourceCodePaths默认加载代码为项目src/main/java下的,若是项目的某一些实体来自外部代码能够一块儿加载 config.setSourceCodePaths( SourceCodePath.path().setDesc("本项目代码").setPath("src/main/java") // SourceCodePath.path().setPath("E:\\Test\\Mybatis-PageHelper-master\\src\\main\\java"), // SourceCodePath.path().setDesc("加载项目外代码").setPath("E:\\ApplicationPower\\ApplicationPower\\Common-util\\src\\main\\java") ); long start = System.currentTimeMillis(); ApiDocBuilder.builderControllersApi(config); long end = System.currentTimeMillis(); DateTimeUtil.printRunTime(end, start); }
生成文档json
URL: http://localhost:8080/user/add后端
Type: postapi
Content-Type: application/json; charset=utf-8restful
Request-parameters:
Parameter | Type | Description | Required |
---|---|---|---|
username | string | 用户名 | true |
password | string | 密码 | false |
nickName | string | 昵称 | false |
mobile | string | 电话 | false |
Request-example:
{ "username":"瑞霖.张", "password":"xud2qc", "nickName":"rudy.goyette", "mobile":"15650966307" }
Response-fields:
Field | Type | Description |
---|---|---|
username | string | 用户名 |
password | string | 密码 |
nickName | string | 昵称 |
mobile | string | 电话 |
Response-example:
[ { "username":"浩然.阎", "password":"dzlv56", "nickName":"kieran.herzog", "mobile":"17863739656" } ]
demo地址:https://github.com/shalousun/api-doc-test
期待下一次咱们更好的相遇
尊重别人,才能让人尊敬。——笛卡尔
分享是一种生活的信念,明白了分享的同时,明白了存在的意义。
smart-doc的发展离不开你的支持,由于出于彻底的开源免费,所以您能够基于smart-doc的源码解析核心上去作一些自定义的开发来将接口文档数据接入到一些第三方的在线api文档管理系统,例如:CrapApi,可是在请使用者能有一份开源的心态和情怀,积极反馈api-doc的核心代码使用bug和提出改善意见。<br/> 因为我我的的开发精力有限,对因而否会将smart-doc快速集成推送到第三方优秀的管理工具,短时间内可能不会考虑,所以也但愿使用者分享一些比较好的集成方案来供你们使用,若是方案比较符合smart-doc使用简洁的核心理念,将会直接归入后续的版本升级中,同时源代码和方案提供者也将归入smart-doc的开发者。
愿你编写接口无数,归来还是少年