Intellij IDE 插件--DocumentAssistant 自動RESTful API 文檔生成

DocumentAssistant


今天先介紹一下我的新開發的一個插件,之前看了很多自動生成文檔的各個方案。但是想0侵入性是不可能的,但是今天我希望通過intellij IDE插件的方式,做到了真正的0侵入生成 RESTful api文檔自動生成。我不想寫文檔這個想法越發強烈,所以導致我不得不開始着手開始編寫一個插件完成其噁心的工作。通過3天努力我終於實現了第一個DocumentAssistant版本。

首先今天希望通過這個博客,提出一個想法。目前DocumentAssistant已經支持基本MD文檔生成,後續會添加自定義模塊的方式生成文檔,而且希望大家一同維護這個DocumentAssistant插件,讓他可以更加強大,從而支持PDF導出和Word文檔的導出,或者直接上某一個雲文檔平臺。這是偉大的想法,希望大家都可以參與進來。最近我會進行開始整理工作,將一些框架和插件進行在GitHub開放源代碼。


來先看看 我寫的小東西。

這是一個非常普通的Spring RestController代碼

@RestController
@RequestMapping("/depositOrder")
public class DepositOrderController extends BaseController {

    @Autowired
    private DepositOrderService depositOrderService;

    /**
     * 充值訂單記錄搜索
     * @param req
     * @return
     */
    @PostMapping("/searchDepositOrder")
    public ResponseBasic<AppPage<DepositOrderSimpleVo>> searchDepositOrder(@RequestBody ReqSearchDepositOrder req){
        AppPage<DepositOrderSimpleVo> appPage = this.depositOrderService.searchDepositOrder(req);
        return ResponseBasic.ok(appPage);
    }

}

下面就是一個GIF圖片顯示如何生成

使用方法:1、選中需要生成的方法名稱 2、調用生成菜單 3、copy 文檔內容

其生成方式是根據如下幾點:

接口名稱生成:通過接口方法的JAVADOC註釋 進行生成。

URI生成:通過application.yml 的 context-path 和 類的RestController類的RequestMapping 、方法的@PostMapping或者@GetMapping等等。

請求參數生成:通過對象的或者方法參數動態生成請求參數列表,並且通過字段類型和字段JAVADOC註釋自動生成請求參數。支持無線級別嵌套,同樣自持父類字段的參數的生成,支持泛型。通過@NotNull annotation判斷是否必要參數

返回內容生成:通過返回的對象自動動態分析字段類型,字段註釋等。支持無線級別嵌套,同樣自持父類字段的參數的生成,支持泛型

請求HTTP 方法:通過@PostMapping或者@GetMapping、@RequestMapping 配置獲得是POST或者GET 等請求類型

請求方式:通過是否爲@RequestBody annotation獲得相應信息進行生成。

 

其中生成的文檔如下:

#  搜索充值方案
 

**請求URL:** 
- `/takeatorder/depositScheme/searchDepositScheme `

**請求方式:**
- POST
- RequestBody


###請求參數<業務參數>
 
|參數名|必選|類型|說明|
|:----    |:---|:----- |-----   |
|clientId|否|Long| 渠道號|
|status|否|Integer| 狀態 0-待使用 1-使用中 2-已過期|
|denomination|否|Long| 面額|
|pageSize|否|Integer| 分頁大小|
|pageNo|否|Integer| 頁碼|

###返回參數
 
|參數名|必選|類型|說明|
|:----    |:---|:----- |-----   |
|code|否|Integer| 返回的code碼  1是正確|
|message|否|String| 服務端返回響應提示信息|
|data|否|Object| 服務端響應的實體|
|--content|否|List| content|
|----depositSchemeId|否|Long| 方案ID|
|----denomination|否|Long| 充值面額|
|----gift|否|Long| 贈送金額(元)|
|----clientName|否|String| 終端名稱|
|----clientId|否|Long| 終端ID|
|----status|否|Integer| 狀態 0-待使用 1-使用中 2-已過期 3-已禁用|
|----statusName|否|String| 狀態名稱|
|----adminUserName|否|String| 操作人名字|
|----adminUserId|否|Long| 操作人ID|
|----startTime|否|DateTime| 開始時間|
|----endTime|否|DateTime| 結束時間|
|----createTime|否|DateTime| 創建時間|
|----remark|否|String| 備註|
|--totalCount|否|Long|  總條目數|
|--currentPageNo|否|Long| 當前頁碼|

 

今天暫時不分享相關的代碼,只分享這個插件的功能。此插件是本人所寫,目前沒有放到IDE 的 plugin repository裏面,如果大家需要可以通過留言的方式,我會通過CSDN下載的方式先提供下載。同時這個插件將會很快提供到IDE plugin repository 裏面。敬請期待。有什麼想法可以通過留言方式跟我分享,同時我可能會在最近實現通過用戶自定義的模板生成指定格式的MD RESTful API文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章