V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuanxin
V2EX  ›  Java

收集文档的小项目

  •  
  •   liuanxin · 2017-12-25 19:48:07 +08:00 · 2153 次点击
    这是一个创建于 2557 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基于 spring mvc 新写了一个用来收集项目文档的小项目: https://github.com/liuanxin/api-document

    长时间维护过项目的人应该都能体会, 如果单独编写文档的话, 随着项目周期的推进, 赶项目等各种需要临时修改代码的片段, 最后很容易出现一个结果: 接口文档和真实代码之间的差距会越来越远. 所以就有了像 springfox(swagger) 这一类跟随项目的文档工具.

    也是用了一段时间的 springfox, 其有些小细节总是觉得不怎么好, 比如: 如果返回的实体里面有一个 Map<String, XXX> xxxMap 这样的字段, 在 springfox 的文档中, 这个 xxxMap 是没有说明的, 只有 inline_model 这么一个提示, 再有就是它的返回示例和字段说明, 需要在不同的选项卡中切换来查看也总是有点别扭(这里是指跟随项目的 swagger-ui 展示出来的结果).

    项目的原理是基于 spring mvc 内部的 RequestMappingHandlerMapping 来完成的, 反射方法和类的一些信息, 页面上用了之前在写文档的时候用到的 ox-twbs(个人不怎么习惯 md)

    收集出来的接口差不多是像下面这样 https://raw.githubusercontent.com/liuanxin/image/master/api.png

    如果不习惯注释跟随在返回示例中, 全局设定一个参数即可, 最后会像这样 https://raw.githubusercontent.com/liuanxin/image/master/api2.png

    建议注释跟文档在一起, 这样当返回字段多的时候, 不需要分屏.

    如果参数和返回结果里面有 enum, 会自动获取其 getCode 和 getValue 放到文档中(通常前者用来参数传递, 后者用来中文显示), 如果没有会收集 name() 成列表并返回.

    硬伤也有: 相比 springfox, 没有即时调试的功能(定位只是用来收集文档), 有一个 mock url 可以查看不带注释的 json 结果. 另外也不支持 ResponseEntity 这一类没有 <无参构造> 的返回

    2 条回复    2017-12-26 08:46:18 +08:00
    WittBulter
        1
    WittBulter  
       2017-12-25 23:52:18 +08:00
    good !
    (如果手动写文档不妨试试这个工具 https://github.com/DhyanaChina/simpler-paper
    liuanxin
        2
    liuanxin  
    OP
       2017-12-26 08:46:18 +08:00 via Android
    @WittBulter 以前就是手动写文档的, 用的 emacs + org mode(个人并不是很喜欢 markdown), 手写文档一开始还能保持同步, 一旦项目上线后两者的差异就会越来越远
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5307 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.