HttpDoc:一个HTTP RESTful API 在线文档阅览和接口测试以及SDK生成框架

HttpDoc

GitHub: https://github.com/core-lib/httpdoc

基于Java标准doc注释构建的代码零侵入的HTTP RESTful API在线阅览文档及测试界面框架

功能特性

  • 基础功能无需为配合HttpDoc框架而多写一句代码,甚至连doc注释都不必写,即可拥有项目的API文档和测试界面。
  • 遵循 RFC 2616 HTTP/1.1 规范,适配主流后台WEB框架。
  • 拓展多个 Java Doc 注释标签,满足不同的文档阅览及在线测试需求。
  • 一键生成SDK,支持多个平台,让前后台以及跨平台对接变得更简单。
  • WEB服务器无关,同时支持 Spring Boot 命令方式启动。
  • 支持 Maven Gradle 或JAR包依赖。

环境依赖

JDK 1.7 +

集成步骤

Maven

  1. 引入依赖
<project>
    <!-- 设置 jitpack.io 仓库 -->
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://www.jitpack.io</url>
        </repository>
    </repositories>

    <dependencies>
        <!-- 添加 HttpDoc 依赖 -->
        <dependency>
            <groupId>com.github.core-lib.httpdoc</groupId>
            <artifactId>httpdoc-spring-mvc</artifactId>
            <version>v1.5.3</version>
        </dependency>
        
        <!-- 添加JDK的tools.jar依赖用于解析源码注释,采用这种方式部署到Tomcat时需要往Tomcat的lib目录增加该tools.jar -->
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>
        <!-- 当然还有很多种方式来依赖tools.jar,例如上传到自己的私服或从别的仓库中依赖进来 -->
    </dependencies>
</project>
  1. 配置插件
<!-- 由于框架基于源码注释解析来实现,所以保留源码是基础,如果只想要在线测试而没有文档阅览的需求,可不必添加该插件。-->
<!-- 如果项目是多模块项目,需要被解析的源码类分散在多模块中,则其他模块也需要配置该插件,或在父项目的pom.xml中配置该插件。-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <encoding>UTF-8</encoding>
    </configuration>
    <executions>
        <execution>
            <id>copy-src</id>
            <phase>process-sources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/classes</outputDirectory>
                <resources>
                    <resource>
                        <directory>${basedir}/src/main/java</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 配置参数
  • SpringMVC

    • web.xml 中增加一个servlet和servlet-mapping标签
    <web-app>
        <servlet>
            <servlet-name>httpdoc</servlet-name>
            <servlet-class>io.httpdoc.web.HttpdocServletSupport</servlet-class>
            <init-param>
                <param-name>httpdoc</param-name>
                <param-value>项目名称</param-value>
            </init-param>
            <init-param>
                <param-name>version</param-name>
                <param-value>项目版本</param-value>
            </init-param>
            <init-param>
                <param-name>description</param-name>
                <param-value>
                    <![CDATA[
                        项目描述(可以内嵌HTML标签)
                    ]]>
                </param-value>
            </init-param>
            <init-param>
                <param-name>dateFormat</param-name>
                <param-value>yyyy-MM-dd HH:mm:ss</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>httpdoc</servlet-name>
            <url-pattern>/httpdoc.json</url-pattern>
        </servlet-mapping>
    </web-app>
    
    • spring-servlet.xml 中增加一个标签以允许浏览器访问HttpDoc的页面静态资源
    <mvc:resources mapping="/httpdoc-ui/**" location="classpath:/META-INF/resources/httpdoc-ui/"/>
    
  • Spring Boot

    • 如果是Spring Boot项目则不需要上面SpringMVC的两个配置,实际上 Spring Boot 项目也没有web.xml文件来做配置。
    • 只需要将httpdoc-spring-mvc依赖替换成下面的依赖并在项目入口主类上标注一个@EnableHttpdoc() 注解即可,对应的参数也可以在注解上设置。
    <dependency>
      <groupId>com.github.core-lib.httpdoc</groupId>
      <artifactId>httpdoc-spring-boot</artifactId>
      <version>v1.5.3</version>
    </dependency>
    

参数说明

  • httpdoc 项目名称,缺省为HttpDoc
  • version 项目版本,缺省为1.0.0
  • description 项目描述,可以用<![CDATA[]]>套起来并使用HTML标签语法
  • protocol 访问协议,http或https,缺省为request.getProtocol();
  • hostname 主机名,缺省为request.getServerName();
  • port 端口号,缺省为request.getServerPort();
  • context 容器路径,缺省为request.getContextPath();
  • dateFormat 日期格式,缺省为yyyy-MM-dd HH:mm:ss
  • translator 文档翻译器,缺省为自动匹配当前项目的WEB框架
  • interpreter 文档解释器,缺省为源码解释器
  • serializer 文档序列化器,缺省为JSON序列化器,所以项目中需要依赖jackson-databind

在线示例

项目中的httpdoc-sample模块就是一个HttpDoc + SpringMVC的一个标准示例,可checkout后查看源码和编译运行查看效果,也可立即预览:httpdoc-sample

变更记录

  • v1.5.3
    • 优化项目依赖让项目集成更简单
    • 默认采用JSON文档序列化器
  • v1.5.2
    • 第一个正式版发布
  • v1.5.1
    • 增加示例模块
    • 增加README.md

协议声明

Apache-2.0

联系作者

QQ 646742615 不会钓鱼的兔子

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343