誰說生成api文檔就必需要定義註解? 誰說生成接口請求和返回示例必需要在線? 用代碼去探路,不斷嘗試更多文檔交付的可能性。 若是代碼有生命,爲何不換種方式和它對話!
1、背景前端
沒有背景、就本身作本身的背景
在當今各類盛行的先後端分離、restful service開發過程當中,接口文檔是必不
可少的。對於先後端分離的開發中,後端開發須要將接口寫好後須要告訴前端工程師接口的請求參數、響應示例等重要信息,而對於對外暴露的restful接口服務,咱們提供接口也是須要具有相同的接口文檔的。java
可是對於後端工程師來說,寫接口文檔將變成一個很大的工做量,雖然如今有相似apidoc、swagger這樣的主流接口文檔生成工具,可是若是實際用過,會發現這些工具不能知足實際需求,這裏拿swagger爲例,這個工具最大的優勢能是提供在線的api文檔,可是它天生就有很強的代碼侵入性,要獲得一個基本知足需求的api接口文檔,必須在代碼中使用swagger自定義的註解。這其實給開發人員增長學習成本和工做量,而且就算你使用大量的註解,有許多接口仍是沒法知足。所以不得不去作一次接口文檔工具從新啓航探索,smart-doc應允而生,用代碼去探路,消除繁雜的註解,發現天下沒有難寫接口文檔。git
2、smart-doc簡介github
簡約而不簡單
smart-doc是基於java開發用於解決java web restful接口文檔書寫難和生成難的問題,固然api-doc也是一款零註解徹底基於源代碼接口定義,使用java標準註釋生成接口文檔的工具。而且smart-doc代碼也是徹底開源的。目前生成的文檔格式爲markdown。web
api-doc的碼雲倉庫連接spring
github倉庫地址連接json
3、功能特性後端
一個都不能少
效率是作好工做的靈魂。——切斯特菲爾德
只有看到本身的不足,才能得到進步。
<dependency> <groupId>com.github.shalousun</groupId> <artifactId>api-doc</artifactId> <version>0.5</version> </dependency>
6.1 定義beanapi
/** * @author yu 2018/8/4. */ public class SimpleUser { /** * 用戶名 */ @NotNull private String username; /** * 密碼 */ private String password; /** * 暱稱 */ private String nickName; /** * 電話 */ private String mobile; }
6.2 定義接口springboot
/** * 用戶信息操做接口 * @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; } }
啓動文檔生成
/** * 包括設置請求頭,缺失註釋的字段批量在文檔生成期使用定義好的註釋 */ @Test public void testBuilderControllersApi() { ApiConfig config = new ApiConfig(); config.setServerUrl("http://localhost:8080"); config.setStrict(true); config.setOutPath("d:\\md"); //不指定SourcePaths默認加載代碼爲項目src/main/java下的,若是項目的某一些實體來自外部代碼能夠一塊兒加載 config.setSourcePaths( SourcePath.path().setDesc("本項目代碼").setPath("src/main/java") // SourcePath.path().setPath("E:\\Test\\Mybatis-PageHelper-master\\src\\main\\java"), // SourcePath.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); }
生成文檔
添加用戶
URL: http://localhost:8080/user/add
Type: post
Content-Type: application/json; charset=utf-8
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
7、將來定義
期待下一次咱們更好的相遇
8、使用協議
尊重別人,才能讓人尊敬。——笛卡爾
9、使用反饋
分享是一種生活的信念,明白了分享的同時,明白了存在的意義。
smart-doc的發展離不開你的支持,由於出於徹底的開源免費,所以您能夠基於smart-doc的源碼解析核心上去作一些自定義的開發來將接口文檔數據接入到一些第三方的在線api文檔管理系統,例如:CrapApi,可是在請使用者能有一份開源的心態和情懷,積極反饋api-doc的核心代碼使用bug和提出改善意見。<br/>
因爲我我的的開發精力有限,對因而否會將smart-doc快速集成推送到第三方優秀的管理工具,短時間內可能不會考慮,所以也但願使用者分享一些比較好的集成方案來供你們使用,若是方案比較符合smart-doc使用簡潔的核心理念,將會直接歸入後續的版本升級中,同時源代碼和方案提供者也將歸入smart-doc的開發者。
10、祝福
願你編寫接口無數,歸來還是少年
做者:慕先生5555510連接:http://www.imooc.com/article/71788來源:慕課網