smart-doc是一個java restful api文檔生成工具,smart-doc顛覆了傳統相似swagger這種大量採用註解侵入來生成文檔的實現方法。smart-doc徹底基於接口源碼分析來生成接口文檔,徹底作到零註解侵入,你只須要按照java標準註釋的寫,smart-doc就能幫你生成一個簡易明瞭的markdown或是一個像GitBook樣式的靜態html文檔。
下面將介紹如何在Spring Boot項目中集成smart-doc生成一個簡明的api文檔。html
注意: smart-doc已經被開源中國收錄,而且開始被國內不少開發者使用到本身項目中快速生成接口文檔。java
添加smart-doc依賴,注意打包後不須要將smart-doc打入最終的產品包,所以我推薦只用test級別就能夠了。git
<dependency> <groupId>com.github.shalousun</groupId> <artifactId>smart-doc</artifactId> <version>1.7.0</version> <scope>test</scope> </dependency>
新建一個對象:github
public class User { /** * 用戶名 */ private String userName; /** * 暱稱 */ private String nickName; /** * 用戶地址 */ private String userAddress; /** * 用戶年齡 */ private int userAge; /** * 手機號 */ private String phone; /** * 建立時間 */ private Long createTime; /** * ipv6 */ private String ipv6; /** * 固定電話 */ private String telephone; //省略get set }
下面來新建一個UserController,而後將User做爲Controller的請求參數和響應實體測試下smart-doc是如何輕鬆完成文檔生成的。json
@RestController @RequestMapping("/user") public class UserController { /** * 添加用戶 * @param user * @return */ @PostMapping("/add") public User addUser(@RequestBody User user){ return null; } }
添加完成controller後,咱們在項目中新建一個單元測試類用於跑文檔。api
public class ApiDocTest { /** * 包括設置請求頭,缺失註釋的字段批量在文檔生成期使用定義好的註釋 */ @Test public void testBuilderControllersApi() { ApiConfig config = new ApiConfig(); config.setServerUrl("http://localhost:8080"); //true會嚴格要求註釋,推薦設置true config.setStrict(true); //true會將文檔合併導出到一個markdown //config.setAllInOne(true); //生成html時加密文檔名不暴露controller的名稱 config.setMd5EncryptedHtmlName(true); //指定文檔輸出路徑 //@since 1.7 版本開始,選擇生成靜態html doc文檔可以使用該路徑:DocGlobalConstants.HTML_DOC_OUT_PATH; config.setOutPath("d:\\md"); // @since 1.2,若是不配置該選項,則默認匹配所有的controller, // 若是須要配置有多個controller可使用逗號隔開 config.setPackageFilters("com.power.doc.controller"); long start = System.currentTimeMillis(); //獲取接口數據後自行處理 ApiDocBuilder.builderControllersApi(config); long end = System.currentTimeMillis(); DateTimeUtil.printRunTime(end, start); } }
最後運行一下單元測試smart-doc便可生成markdown接口文檔到指定的目錄。效果以下:restful
URL: http://localhost:8080/user/add
markdown
Type: POST
app
Content-Type: application/json; charset=utf-8
異步
Request-parameters:
Parameter | Type | Description | Required | Since |
---|---|---|---|---|
userName | string | 用戶名 | false | - |
nickName | string | 暱稱 | false | - |
userAddress | string | 用戶地址 | false | - |
userAge | int | 用戶年齡 | false | - |
phone | string | 手機號 | false | - |
createTime | number | 建立時間 | false | - |
ipv6 | string | ipv6 | false | - |
telephone | string | 固定電話 | false | - |
Request-example:
{ "userName":"鵬飛.賀", "nickName":"raymond.gutkowski", "userAddress":"Apt. 819 蕭旁7699號, 章丘, 滇 852063", "userAge":41, "phone":"15018373016", "createTime":1569934393095, "ipv6":"9eb3:fada:ffd2:912e:6225:1062:a2d7:718f", "telephone":"15018373016" }
Response-fields:
Field | Type | Description | Since |
---|---|---|---|
userName | string | 用戶名 | - |
nickName | string | 暱稱 | - |
userAddress | string | 用戶地址 | - |
userAge | int | 用戶年齡 | - |
phone | string | 手機號 | - |
createTime | number | 建立時間 | - |
ipv6 | string | ipv6 | - |
telephone | string | 固定電話 | - |
Response-example:
{ "userName":"鵬飛.賀", "nickName":"raymond.gutkowski", "userAddress":"Apt. 819 蕭旁7699號, 章丘, 滇 852063", "userAge":41, "phone":"15018373016", "createTime":1569934393095, "ipv6":"9eb3:fada:ffd2:912e:6225:1062:a2d7:718f", "telephone":"15018373016" }
是否是比swagger簡單不少呢,並且還徹底不侵入代碼,只須要寫上標準的java doc註釋。須要瞭解更多多狀況請查看smart-doc項目,好用請記得點star哦。查看smart-doc項目
注意: 本文來自smart-doc原做者,您能夠轉載但請勿copy充當原創。