使用apidocJs快速生成在线文档的实例讲解

apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java、C、C#、PHP和Javascript等。使用者仅需要按照要求书写相关注释,就可以生成可读性好、界面美观的在线接口文档。

本文主要包含以下内容:

1.介绍apidoc的基本概念

2.安装、使用和简单配置

3.一些特殊参数的含义及其使用

4.介绍一些使用经验

前言

apidoc能做什么?

apidoc是一个轻量级的在线REST接口文档生成系统,可以根据其特定的规则的代码注释来生成静态网页。首先看下它生成的文档界面和风格。

支持

apidoc支持多种主流的编码语言,包括Java、C、C#、PHP和Javascript。一般情况下,语言会有多种注释方法,例如就Java中有普通风格的多行注释和Javadoc风格的注释。apidoc并不支持所有的注释,譬如Java仅中支持Javadoc风格的注释。首先要说明的是,apidoc并不具备语义识别能力,它不会发现代码中是否有BUG,它仅仅通过文件后缀来判断语言类型。下面是一些不同语言注释示例:

* Java、Javascript、PHP *

/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup User
 *
 * @apiParam {Number} id Users unique ID.
 *
 * @apiSuccess {String} firstname Firstname of the User.
 * @apiSuccess {String} lastname Lastname of the User.
 */

* Python *

"""
@api {get} /user/:id Request User information
@apiName GetUser
@apiGroup User

@apiParam {Number} id Users unique ID.

@apiSuccess {String} firstname Firstname of the User.
@apiSuccess {String} lastname Lastname of the User.
"""

安装

apidoc是基于nodeJs平台,在安装apidoc之前,需要先安装nodeJs。关于nodeJs的安装,一搜一大把,不过为了文章的完整性,还是首先介绍一下Windows平台下nodeJs的安装。

nodeJs安装

首先,去node.js官网上下载最新的安装包,请下载自己对应系统的安装包。譬如笔者的操作系统是64位Windows操作系统,就下载下图所示的node安装包。

下载完毕后,按照一般的软件安装步骤安装即可。由于笔者的计算机已经安装过了,在这里就不过细演示了。

按理来说,按照安装步骤安装完毕后,node环境也已经配置好了,现在来验证一下node是否已正确安装配置。

首先,打开Window Shell窗口。使用win+R快捷键打开运行窗口,在文本框中输入cmd并回车打开Windows Shell。

然后,在控制台输入node命令进入node控制台。

最后,运行一个Hello World程序。在node控制台中输入console.info("hello world");,如果输出如下图所示的结果,则表示node安装配置成功。

除了node之外,npm(node package manager,node安装包管理器)也是很重要的,可以通过它来便捷地下载和安装node应用。在Windows Shell中输入npm命令,如果出现如下图所示的信息,则表示npm也正确安装完毕。

apidoc安装

apidoc可以利用npm来快速安装。

1、进入Windows Shell,输入npm install apidoc -g进行apidoc的安装,如下图。

等待一定时间(根据自身的网速)的下载和安装之后,如果出现下图所示的信息,则表示apidoc安装成功。

2、在Windows Shell中输入apidoc -v命令,如果出现如下图所示的界面,则表示apidoc已安装成功。

初步使用

下面通过一些简单的demo来介绍如何利用apidoc生成一份在线接口文档。

命令行

在正式开始之前,先介绍一下apidoc中的重要命令和参数。apidoc的命令格式如下:

apidoc 参数

一些重要的参数如下表所示:

参数 描述
-f 选择要解析的文件,支持正则表达式。-f参数可以使用多次,多个表达式可以对应不同的-f。如:apidoc -f ".*\.js$" -f ".*\\.ts$"
-i 选择源代码所在的位置。如:apidoc -i myapp/
-o 选择生成的目标文件所在的位置。如:apidoc -o apidoc/
-t 为生成文件选择模板,可以创建和使用自定义的模板。(笔者注:目前为止,笔者还没有使用过这个参数)
-h 跟绝大多数命令一样,这个参数可以打印出帮助文档
apidoc -i src/ -o apidoc/ # 可以通过搜索src目录中的文件快速的生成文档文件,并将这些文件放在apidoc目录下。
apidoc -h # 显示帮助信息

使用apidoc

一个典型的文件目录结果如下图所示。

其中:

apidoc.json:apidoc的项目级配置文件,它必须位于整个工程目录顶层。

Demo1.java:用于演示的demo源文件,它可以位于整个工程目录的顶层目录及其子目录下。apidoc会搜索整个工程目录选择所有可能的源文件。

apidoc.json和Demo1.java中包含的代码分别如下:

{
 "name": "demo",
 "version": "1.0.0",
 "description": "这是一个简单的apidoc的demo",
 "title": "demo",
 "url" : "https://api.github.com/v1"
}
/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup User
 *
 * @apiParam {Number} id Users unique ID.
 *
 * @apiSuccess {String} firstname Firstname of the User.
 * @apiSuccess {String} lastname Lastname of the User.
 */

下面通过这个demo来介绍如何生成文档文件。

首先,在Windows Shell中进入apidoc工程目录的上层目录。例如笔者的apidoc的工程位于E:\workspaces\sublime\apidoc路径下。在这个目录中创建名为src的工程目录,将apidoc.json和Demo1.java文件置于src目录下。

然后,在Windows Shell中输入apidoc -i src/ -o apidoc/命令,如果出现如下图所示的Done结果,则表明文档已经生成,位于同级目录的apidoc(与-o apidoc对应)目录下。

最后,打开apidoc目录,可以看到如下图所示的静态Web文件。双击index.html就可以在浏览器中打开生成在线接口文档网站。

这样我们就成功地生成了一份在线接口文档了,接下来就只要部署到任意Web容器(Apache、Tomcat等)就可以将接口文档对外发布了,So easy!

配置

apidoc.json文件是项目级的配置文件,接下来简单地介绍一下其中常用的配置项。

配置名 描述
name 工程名。如果该字段不存在,则apidoc会尝试通过package.json(apidoc顶层配置文件)来生成
version 工程文档的版本号。如果该字段不存在,则apidoc会尝试通过package.json(apidoc顶层配置文件)来生成
description 工程详细描述。如果该字段不存在,则apidoc会尝试通过package.json(apidoc顶层配置文件)来生成
title 文档标题,显示在文档界面的最上方
url 整个api url的前缀,接下来的所有接口url都会加上这个前缀
sampleUrl api示例的url前缀。如果设置了这个值,则界面中显示请求表单,可以用于测试接口
header
title 文档头(header)的连接锚点名
filename 文档头所使用的文件
footer
title 文档尾(footer)的连接锚点名
filename 文档尾所使用的文件
order 接口的排列顺序list,如果不指定,则由apidoc自行确定

一个比较完整的配置文件如下:

{
 "name": "demo",
 "version": "1.0.0",
 "description": "这是一个简单的apidoc的demo",
 "title": "demo",
 "url": "https://api.github.com/v1",
 "sampleUrl": "https://api.github.com/v1/test",
 "header": {
  "title": "header",
  "filename": "header.md"
 },
 "footer": {
  "title": "footer",
  "filename": "footer.md"
 },
 "order": [
  "Error",
  "Define",
  "PostTitleAndError",
  "PostError"
 ]
}

更多的配置项请参考apidoc官方文档站点

Params

apidoc中最核心的东西就是参数(params)的书写,本节介绍apidoc中一些重要的params。

@api

@api定义一个特定的接口。如果一个注释块既不包含@apiDefine又没有包含@api参数,则apidoc会直接忽略这个注释块。这个参数在界面上表示一个接口区域块如下:

@api的书写格式为:

@api {method} path [title]

注意,[xxx]表示一个可选的参数,下同。

下表介绍了@api中的参数含义。

参数 描述
method 请求的HTTP方法名,包括DELETE, GET, POST, PUT,更多方法详见http-learn-url
path 请求的url path(不包括前缀)
title 接口名,用于接口索引。这个配置项会显示在导航菜单中。

更多的配置项请参考apidoc官方文档站点

@apiDefine

@apiDefine表示定义一个变量,该变量可以指代任意值(字符串、参数块),这个参数并且写在独立的代码块中。可以使用@apiUse来使用其定义的变量。

@apiDefine的书写格式为:

@apiDefine name [title] [description]

下表介绍了@apiDefine中的参数含义。

参数 描述
name 值或者块的名字,可以看做就是变量名
title 标题,一般用于@apiParam (name)参数,显示请求参数所在组的名称
description 该变量的描述。

下面的代码定义一个错误块,然后在接口定义中引用使用这个错误块。多个不同接口可以引用同样的@apiDefine块,这也变成语言的变量功能一直。可以消除重复代码。

/**
 * @apiDefine MyError
 * @apiError UserNotFound The <code>id</code> of the User was not found.
 */

/**
 * @api {get} /user/:id
 * @apiUse MyError
 */

@apiDescription

用于@api代码块中,用于详尽地描述接口的功能。

@apiDescription的书写格式为:

@apiDescription text

text就是具体的描述内容,可以直接使用Markdown语法,这极大地丰富了其表现形式。

@apiGroup

表示接口所属的组,最直接的体现就是在侧边导航中将接口分在对用的组中。

@apiGroup的书写格式为:

@apiGroup name

name表示组名,可以是任意字符串。值得注意的是,name不支持中文,一旦输入中文,apidoc就会忽略这些中文字符。如果需要在界面中显示中文接口组名,只需要使用@apiDefine定义一个中文字符串,然后name用变量名替换即可。

/**
 * @apiDefine group 测试
 */

/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup group
 */

@apiName

表示接口的名字,应该在每个@api块中使用。可以生成一个Web锚点,快速定位接口位置。可以看到锚点(url的#后面的字符串)通常由groupName-apiName构成。

@apiName的书写格式为:

@apiName name

@apiUse

表示引用一个@apiDefine定义的值或块,相当于直接替换变量的值。

@apiUse的书写格式为:

@apiUse name 

name是一个已定义的@apiDefine中的name,如果输入的name不存在,则会抛出类似下面的异常信息。

{ File: 'src\\Demo1.java',
 Block: 4,
 Element: '@apiUse',
 Groupname: 'test',
 Definition: '@apiUse group',
 Example: '@apiDefine MyValidGroup Some title\n@apiUse MyValidGroup' }

下面是一个示例:

/**
 * @apiDefine test
 * @apiParam {Number} id Users unique ID.
 */

/**
 * @apiUse test
 * @apiParam {Number} name name.
 */

@apiParam

表示一个请求参数。

@apiParam的书写格式为:

@apiParam [(group)] [{type}] [field=defaultValue] [description]

下表介绍了@apiParam中的参数含义。

参数 描述
(group) 参数所在的组,可以使用@apiDefine定义的值
{type} 参数的类型。例如 {Boolean}, {Number}, {String}, {Object}, {String[]} (array of strings), ..
field 请求参数名。
[field] 表示这个参数是个可选参数,非必传参数。
=defaultValue 表示这个参数的默认值。
description 这个请求参数的描述,支持Markdown语法。

下面是一个简单的示例:

/**
 * @api {get} /user/:id
 * @apiParam {Number} id Users unique ID.
 */

/**
 * @api {post} /user/
 * @apiParam {String} [firstname] 用户名(非必填).
 * @apiParam {String} lastname  用户姓(必填).
 */

@apiSuccess

表示请求成功时的一个返回字段。

@apiSuccess的书写格式为:

@apiSuccess [(group)] [{type}] field [description]

@apiSuccess的参数含义与@apiParam一致,这里就不再做说明了。

@apiError

表示请求失败时的一个返回字段。

@apiError的书写格式为:

@apiError [(group)] [{type}] field [description]

与apiSuccess的参数含义完全一致。

@apiParamExample

表示一个请求范例。

@apiParamExample的书写格式为:

@apiParamExample [{type}] [title] example
参数 描述
{type} 表示请求数据的格式
title 显示在界面上的示例标题
example 示例实体

下面是一个简单的示例:

/**
 * @api {get} /user/:id
 * @apiParamExample {json} Request-Example:
 *  {
 *  "id": 4711
 *  }
 */

@apiSuccessExample

表示一个响应范例。其书写格式和参数含义与@apiParamExample完全一样。

@apiSampleRequest

表示一个接口测试块,可以根据定义的请求参数来生成一个表单,用来进行接口测试。

@apiSampleRequest的书写格式为:

@apiSampleRequest url

url可以与配置文件(apidoc.json)中的sampleUrl以及@api定义的path连接成一个完整的测试url。例如:

/**
 * @api {get} /user/:id
 * @apiParam {Number} id Users unique ID.
 * @apiSampleRequest /test
 */

生成的界面截图如下:

一些实际经验

下面介绍一下在实际使用过程发现的东西。

绝大部分地方可使用Markdown语法

在几乎所有的描述类字段处都可以使用符合Markdown语法的文本,可以使得文档形式更加美观。

/**
 * @api {get} /user/:id
 * @apiParam {String} rule
 *
 * - 规则1:不能使用小数
 * - 规则2:不能相加
 */

从下图中可以看到name和age字段的前面有些缩进,而且字段显示名为name和age。

以上这篇使用apidocJs快速生成在线文档的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Python快速从注释生成文档的方法
(0)

相关推荐

  • Python快速从注释生成文档的方法

    作为一个标准的程序猿,为程序编写说明文档是一步必不可少的工作,如何才能写的又好又快呢,下面我们就来详细探讨下吧. 今天将告诉大家一个简单平时只要注意的小细节,就可以轻松生成注释文档,也可以检查我们写的类方法引用名称是否重复有问题等. 一看别人专业的大牛们写的文档多牛多羡慕,不用担心我们可以让python为我们生成基本满足的说明文档,一来可以提高代码整体阅读性,二来可以将代码的整体结构看着也更清晰,这样在交接的时候可以省很多麻烦,其它同事在接手你工作的时候也不会一行行去问你这是什么那是什么的,因为

  • 使用apidocJs快速生成在线文档的实例讲解

    apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java.C.C#.PHP和Javascript等.使用者仅需要按照要求书写相关注释,就可以生成可读性好.界面美观的在线接口文档. 本文主要包含以下内容: 1.介绍apidoc的基本概念 2.安装.使用和简单配置 3.一些特殊参数的含义及其使用 4.介绍一些使用经验 前言 apidoc能做什么? apidoc是一个轻量级的在线REST接口文档生成系统,可以根据其特定的规则的代码注释来生成静态网页.首先看下它生成的文档界

  • java快速生成接口文档的三种解决方案

    目录 前言 方案一,使用japidocs 基本用法 方案2,swagger + knife4j 生成步骤 方案3,开源的接口文档生成工具 总结 前言 常常在项目收尾阶段,客户需要项目的接口文档,或者是一个大的sass平台,各个产品之间互相调用的时候,需要对方提供接口文档 通常来说,接口文档属于产品的技术沉淀,是一个长期积累的过程,然而,很多时候,开发阶段并不会想的那么多,结果到了需要接口文档的时候总是疲于应付,情急之下,往往采用最笨拙的办法,就是对照着项目代码,一个个拷贝吧 下面针对这个情况,小

  • java快速生成数据库文档详情

    目录 前言 环境准备 1.导入pom依赖 2.数据库连接工具类 3.生成数据库文档核心方法 前言 在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库文档这种操作来说,对于新手,甚至很多有一定开发经验的同学来说,都觉得是一件费力得事情,下面推荐一个小组件,并提供一段程序,帮助有需要得同学快速生成数据库文档,已解决这个麻烦得小事 环境准备 一个开发数据库,以下截取了部分表,实际中可能远不止这些 1.导入pom依赖 <!-- screw核心 --> &l

  • Java的文档注释之生成帮助文档的实例

    示例: /** * Title: Person类<br/> * Description:通过Person类说明Java中的文档注释<br/> * Company: *** * @author *** * @version 1.0 */ public class Person { /** * 这个是Person类的构造方法 * @param name Person 的名字 * */ public Person(String name) { //执行语句: } /** * 这是read

  • 教你怎么用IDEA快速生成注释文档

    IDEA提供了快捷方式来生成指定的代码.首先我们要编写好代码的模板. 打开IDEA的settings-Editor-Live Templates.点击右边的+号.选择Template Group. 这里我用的Java作为Template Group名,然后在选中刚刚创建的Template Group,再点击右边的+号,这次选Live Template. 然后就进入了live template的设置界面.首先我们要先设置我们这个模板是为java文件准备的.看到底下的这个文字,点击这个Define.

  • 手把手教你使用Java实现在线生成pdf文档

    目录 一.介绍 二.案例实现 2.1添加iText依赖包 2.2简单实现 2.3复杂实现 2.4变量替换方式 三.总结 一.介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票.订单的库存打印单.各种电子签署合同等等,以方便用户查看.打印或者下载. 例如下图的电子发票! 熟悉这块业务的童鞋,一定特别清楚,目前最常用的解决方案是:把相关的数据信息,通过一些技术手段生成对应的 PDF 文件,然后返回给用户,以便

  • spring boot集成smart-doc自动生成接口文档详解

    目录 前言 功能特性 1 项目中创建 /src/main/resources/smart-doc.json配置文件 2 配置内容如下(指定文档的输出路径) 3 pom.xml下添加配置 4 运行插件 5 找到存放路径浏览器打开 6 测试结果 前言 smart-doc 是一款同时支持 java restful api 和 Apache Dubbo rpc 接口文档生成的工具,smart-doc 颠覆了传统类似 swagger 这种大量采用注解侵入来生成文档的实现方法. smart-doc 完全基于

  • PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)

    本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的功能,又是我一个人做的项目,所以就想到找免费的现成的来使用.在网上找到的都是一样的.如下: Flash Paper支持Office文档(.doc,.xls,.ppt)直接转换为PDF或SWF,速度很快,效果较好.可惜,Flash Paper V2.2后没有再更新了.安装Flash Paper后,可以直接使用命令调用FlashPrinter.exe,实现批量转换. 例如:C:\Fla

  • Spring boot集成swagger2生成接口文档的全过程

    一.Swagger介绍 Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的web服务.目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器.这个解释简单点来讲就是说,swagger是一款可以根据restful风格生成的接口开发文档,并且支持做测试的一款中间软件. 二.使用swagger优势 1.对于后端开发人员来说 不用再手写Wiki接口拼大量参数,避免手写错误 对代码侵入性低,采用全注解的方式,开发简单 方法参数名修改.

  • Go语言使用swagger生成接口文档的方法

    swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言.Swagger与一组开源软件工具一起使用,以设计.构建.记录和使用RESTful Web服务.Swagger包括自动文档,代码生成和测试用例生成. 在前后端分离的项目开发过程中,如果后端同学能够提供一份清晰明了的接口文档,那么就能极大地提高大家的沟通效率和开发效率.可是编写接口文档历来都是令人头痛的,而且后续接口文档的维护也十分耗费精力. 最好是有一种方案能够既满足我们输出文档的需要又能

随机推荐