前言

大家好,我叫叶大侠,一名独立开发者。这个文档工具是我17年的一个想法,当时还是在公司里面上班,负责App客户端的开发工作,当时后端童鞋写文档的意愿比较低,总是要等他们开发完接口,然后才在微信上沟通接口细节,显然这样的效率很低,导致前端的童鞋总是差不多deadline的时候才猛加班。

后面我建议让他们能不能先把接口设计好,这样大家可以并行开发,但显然会增加了他们不少工作量,于是不太乐意。在这样的背景下,我就想能不能搞个工具来自动生成这个文档,并且尽可能不增加他们的工作量。

当时组里面后端用的还是play框架,我调研了一下这个框架,结合java强类型的语言特性,有了基本的思路,于是私下花了差不多两周的时间做了个很初级的版本,虽然简陋,但基本可以满足对文档的需求了。

这就是JApiDocs最初的想法来源。

后来觉得这个东西别人也许也会需要,后面我就把它整理出来开源了,并扩展支持了SpringBoot、JFinal框架。

不久这个项目受到了开源中国的推荐,收获了一波星星,后面还受邀到源创会去分享了一下,这算是这个项目的巅峰时刻了。

后来由于我出来创业,慢慢就没时间打理这个项目了,关注度也慢慢下去了。

内心始终有股遗憾,码农生涯如果没有个像样的开源产品,感觉不是很圆满,所以我又回来继续完善这个开源工具了,虽然不知道最终是否会得到大家认可,但还是想去尝试一下。

简介

编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后端代码都是自己写的,否则API文档将是前后端协作中一个不可或缺的沟通界面。

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。

无图无真相,生成文档的效果如下:


相比Swagger要写一堆注解,Spring Rest Docs需要写测试用例,才能生成API文档,JApiDocs 具有无痛集成的特点。

快速开始

要使得JApiDcos正确工作,你写的代码应该是像下面的样子的:

/** * 用户接口 */@RequestMapping("/api/user/")@RestControllerpublic class UserController {    /**     * 用户列表     * @param listForm     */    @RequestMapping(path = "list", method = {RequestMethod.GET,  RequestMethod.POST}  )    public ApiResult> list(UserListForm listForm){return null;    }/**     * 保存用户     * @param userForm     */@PostMapping(path = "save")public ApiResult saveUser(@RequestBody UserForm userForm){return null;    }}

我们给Controller类和方法加上必要的注释,给接口方法返回相关的对象类型。是的,这样JApiDocs就能解析到相关的接口信息了,就跟我们平时写的代码是差不多的,但要注意,你要通过@param来告诉JApiDocs接口的参数,但在IDE的帮助下,这个工作将是轻松愉悦的:


然后你在任意一个main入口方法执行下面的代码就可以生成文档了:

DocsConfig config = new DocsConfig();config.setProjectPath("your springboot project path"); // 项目根目录config.setProjectName("ProjectName"); // 项目名称config.setApiVersion("V1.0");       // 声明该API的版本config.setDocsPath("your api docs path"); // 生成API 文档所在目录config.setAutoGenerate(Boolean.TRUE);  // 配置自动生成Docs.buildHtmlDocs(config); // 执行生成文档

接下来你只管好好写代码,生成Api文档的工作就可以交给JApiDocs了,你不需要再为额外编写和维护文档而烦恼。

功能特性

1、代码即文档

JApiDocs是通过直接解析SpringBoot的源码语法来工作的,所以只要Controller的语法符合一定的代码规范,有合理的注释,就可以直接导出文档。

2、支持导出HTML

便捷的导航和接口查看界面;可本地预览,或者部署到HTTP服务器。推荐部署到服务器,方便前后端展开协作。

3、同步导出客户端Model代码

支持导出Android端的 Java 和iOS端的 Object C Model代码,减少前端程序员的重复编码工作。

4、更多特性

支持接口搜索;支持不同版本和英文文档;自定义扩展等。

简洁的文档

再好用的东西,如果没有文档说明,别人也无从入手。为了让大家尽快上手,JApiDocs准备了一份极简的文档说明,确保你在几分钟就能用上JApiDocs。

人生苦短,必须偷懒。

花5分钟不到就能认识一个提高工作效率的工具,让你把更多的时间花在更加有价值的事情上,你确认不看一下吗?

https://github.com/YeDaxia/JApiDocs (可点击文章最下面的原文链接到项目主页)

温馨提示:GitHub上收藏和支持一个项目最好的方式就是点个star哦!


接下来的计划

这个工具的目标很明确,就是尽可能提升前后端沟通和开发效率。接下来的计划包括但不限于:

  1. 支持更多导出文档格式;
  2. 自动生成前端的接口代码,供App或网页前端开发同学直接使用;
  3. 把发生变化的接口标识出来;
  4. 对接一些开源mock平台等。

开源不易,欢迎大家关注和支持!

关于AgileStudio

我们是一支由资深独立开发者和设计师组成的团队,成员均有扎实的技术实力和多年的产品设计开发经验,提供可信赖的软件定制服务。

itextpdf api帮助文档_我开源了一个小工具,可以帮你轻松生成 SpringBoot API 文档...相关推荐

  1. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...

    昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...

  2. ppt倒计时3分钟_这些出神入化的PPT小技巧,帮你轻松告别丑PPT!花3分钟看一看吧...

    现在有很多小伙伴都会和PPT打交道,不过在PPT中还是有很多操作将很多人拦住了,做出来的PPT也是有点惨不忍睹了. 别担心,今天小编将分享几个非常实用的PPT小技巧给大家,帮大家轻松做出好看的PPT~ ...

  3. ie浏览器修复工具_电脑故障修复不求人!50个小工具可帮你一键修复

    电脑故障修复不求人 50个小工具可帮你一键修复 IE王页设置已损坏修复工具 可帮用户解决win10系统下IE浏览器打开提示"主页设置已损坏"."默认搜索提供程序设置已损坏 ...

  4. python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)

    原标题:自制快速冒烟测试小工具--基于python多线程(2) 新书 速递 文 |愈知愈无知 快速冒烟测试小工具-(1)分析及准备 三.代码实现-封装 1. 创建包和文件夹目录 Config:存放配置 ...

  5. 【开源一个小工具】一键将网页内容推送到Kindle

    http://www.zijinxing.com/201412/124636.html 最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple S ...

  6. alert获取输入框内容_实用开源:Web 聊天工具的富文本输入框

    最近折腾 Websocket,打算开发一个聊天室应用练练手.在应用开发的过程中发现可以插入 emoji ,粘贴图片的富文本输入框其实蕴含着许多有趣的知识,于是便打算记录下来和大家分享. 仓库地址:ch ...

  7. 用最普通的文档,我做了一个小助手,没有一行代码

    当我写下第一行文字时,雅格布就这样诞生了. 我的助手雅格布 雅格布是我的助手,它能在工作中,帮我做出正确的选择: 还能让我在工作中持续投入时间,并保持激情. 简单来说,雅格布是一个决策工具,专门解决选 ...

  8. java实现镜像系统_谷歌开源Java镜像构建工具Jib

    容器的出现让Java开发人员比以往任何时候都更接近"编写一次,到处运行"的工作流程,但要对Java应用程序进行容器化并非易事:你必须编写Dockerfile,以root身份运行Do ...

  9. 短信接口抓包_[实战] 实现抢票小工具amp;短信通知提醒

    作者:西岚 写在前言 要知道在深圳上班是非常痛苦的事情,特别是我上班的科兴科技园这一块,去的人非常多,每天上班跟春运一样,如果我能换到以前的大冲上班那就幸福了,可惜,换不得. 尤其是我这个站等车的多的 ...

最新文章

  1. silverlight学习布局之:布局stackpanel
  2. 我的Ubuntu9.10安装与配置100
  3. 【学习笔记】CO内部订单
  4. 【Python】图解Pandas数据合并:concat、join、append
  5. C语言满分代码:L1-056 猜数字 (20分)
  6. Android 版本适配:9.0 Pie(API 级别 28)
  7. TP5项目lnmp环境500错误
  8. 如何获取LanuchImage
  9. 古代汉语(王力版)笔记
  10. 南京服务器修复,南京戴尔服务器数据恢复
  11. 参数方程绘制球面、椭球面、环面_OpenGL
  12. 第1课-如何有效学习和训练算法和数据结构
  13. Wavel Sequence HDU - 6078 (dp)
  14. 在Scrum中添加目标与合弄制
  15. DataFrame增加数据的多种方法
  16. 电容或电感的电压_电流,电压,电阻,电容和电感
  17. 搜索排序LambdaMART中Lambda的计算过程java版本
  18. 罗克韦尔 Allen-Bradley AB 1442系列传感器 电涡流传感器/速度传感器/加速度传感器
  19. 右下角弹出广告 js,漂浮效果(兼容多浏览器)
  20. Mandelbrot 并行实现

热门文章

  1. 实验室机器OracleXE客户端连接远程Oracle服务器
  2. javabean简述
  3. 【Python】Error:Input 'y' of 'Add' Op has type float32 that does not match type int32 of argument 'x'.
  4. MATLAB错误:没有为类’struct’的值定义函数’subsindex’
  5. 测度论--长度是怎样炼成的
  6. 承载千万级并发的分布式系统架构设计思想
  7. yolo3连接网络摄像头实现目标检测命令
  8. 从一亩三分地转——“有代码的地方,就有江湖 - 冯诺伊曼.金庸”
  9. lua c/c++ 交互 基础
  10. 查看内核中每个函数花费的时间 initcall_debug