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文档。

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