Web API 文檔生成工具 apidoc

原文地址:梁桂釗的博客node

在服務端開發過程當中,咱們須要提供一份 API 接口文檔給 Web 端和移動端使用。實現 API 接口文檔編寫工做,有不少種方式,例如經過 Word 文檔編寫,或者經過 MediaWiki 進行維護。此外,還有比較流行的方式是利用 Swagger 自動化生成文檔。這裏,筆者想分享另外一個 Web API 文檔生成工具 apidoc。git

apidoc 是經過源碼中的註釋來生成 Web API 文檔。所以,apidoc 對現有代碼能夠作到無侵入性。此外,apidoc 能夠支持多種語言 C#, Go, Dart, Java, JavaScript, PHP, TypeScript (all DocStyle capable languages),CoffeeScript,Erlang,Perl,Python,Ruby,Lua。經過 apidoc 能夠很是方便地生成可交互地文檔頁面。github

開始入門

首先,咱們須要 node.js 的支持。在搭建好 node.js 環境後,經過終端輸入 npm 命名進行安裝。npm

npm install apidoc -g
複製代碼

接着,咱們還須要添加 apidoc.json 文件到項目工程的根目錄下。json

{
  "name": "example",
  "version": "0.1.0",
  "description": "apiDoc basic example",
  "title": "Custom apiDoc browser title",
  "url" : "https://api.github.com/v1"
}
複製代碼

這裏,筆者主要演示 Java 註釋如何和 apidoc 結合使用。如今,咱們先來看一個案例。api

/**
 *   @api {GET} logistics/policys 查詢簽收預警策略
 *   @apiDescription 查詢簽收預警策略
 *   @apiGroup QUERY
 *   @apiName logistics/policys
 *   @apiParam  {Integer} edition   平臺類型
 *   @apiParam  {String} tenantCode 商家名稱
 *   @apiPermission LOGISTICS_POCILY
 */
複製代碼

最後,咱們在終端輸入 apidoc 命令進行文檔生成。這裏,咱們用本身的項目工程的根目錄替代 myapp/,用須要生成文檔的地址替代 apidoc/。bash

apidoc -i myapp/ -o apidoc/ 
複製代碼

例如,筆者的配置是這樣的。微信

apidoc -i /Users/lianggzone/Documents/dev-space/git-repo -o /Users/lianggzone/Documents/dev-space/apidoc/ 
複製代碼

代碼註釋

@api

@api 標籤是必填的,只有使用 @api 標籤的註釋塊纔會被解析生成文檔內容。格式以下:app

@api {method} path [title]
複製代碼

這裏,有必要對參數內容進行講解。工具

參數名 描述
method 請求方法, 如 POST,GET,POST,PUT,DELETE 等。
path 請求路徑。
title【選填】 簡單的描述

@apiDescription

@apiDescription 對 API 接口進行描述。格式以下:

@apiDescription text
複製代碼

@apiGroup

@apiGroup 表示分組名稱,它會被解析成一級導航欄菜單。格式以下:

@apiGroup name
複製代碼

@apiName

@apiName 表示接口名稱。注意的是,在同一個 @apiGroup 下,名稱相同的 @api 經過 @apiVersion 區分,否者後面 @api 會覆蓋前面定義的 @api。格式以下:

@apiName name
複製代碼

@apiVersion

@apiVersion 表示接口的版本,和 @apiName 一塊兒使用。格式以下:

@apiVersion version
複製代碼

@apiParam

@apiParam 定義 API 接口須要的請求參數。格式以下:

@apiParam [(group)] [{type}] [field=defaultValue] [description]
複製代碼

這裏,有必要對參數內容進行講解。

參數名 描述
(group)【選填】 參數進行分組
{type}【選填】 參數類型,包括{Boolean}, {Number}, {String}, {Object}, {String[]}, (array of strings), ...
{type{size}}【選填】 能夠聲明參數範圍,例如{string{..5}}, {string{2..5}}, {number{100-999}}
{type=allowedValues}【選填】 能夠聲明參數容許的枚舉值,例如{string="small","huge"}, {number=1,2,3,99}
field 參數名稱
[field] 聲明該參數可選
=defaultValue【選填】 聲明該參數默認值
description【選填】 聲明該參數描述

相似的用法,還有 @apiHeader 定義 API 接口須要的請求頭,@apiSuccess 定義 API 接口須要的響應成功,@apiError 定義了 API 接口須要的響應錯誤。

這裏,咱們看一個案例。

/**
 *   @apiParam  {Integer} edition=1   平臺類型
 *   @apiParam  {String} [tenantCode] 商家名稱
 */
複製代碼

此外,還有 @apiParamExample,@apiHeaderExample, @apiErrorExample,@apiSuccessExample 能夠用來在文檔中提供相關示例。

@apiPermission

@apiPermission 定義 API 接口須要的權限點。格式以下:

@apiPermission name
複製代碼

此外,還有一些特別的註解。例如 @apiDeprecated 表示這個 API 接口已經廢棄,@apiIgnore 表示忽略這個接口的解析。關於更多的使用細節,能夠閱讀官方文檔:http://apidocjs.com/#demo

完整的案例

最後,咱們用官方的案例,講解下一個完整的配置。

首先,配置 apidoc.json,內容以下:

{
  "name": "example",
  "version": "0.1.0",
  "description": "A basic apiDoc example"
}
複製代碼

接着,咱們配置相關的 Java 源碼註釋。

/**
 * @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.
 *
 * @apiSuccessExample Success-Response:
 *     HTTP/1.1 200 OK
 *     {
 *       "firstname": "John",
 *       "lastname": "Doe"
 *     }
 *
 * @apiError UserNotFound The id of the User was not found.
 *
 * @apiErrorExample Error-Response:
 *     HTTP/1.1 404 Not Found
 *     {
 *       "error": "UserNotFound"
 *     }
 */
複製代碼

而後,執行命名生成文檔。

apidoc -i myapp/ -o apidoc/
複製代碼

生成的頁面,以下所示。

(完)

更多精彩文章,盡在「服務端思惟」微信公衆號!

相關文章
相關標籤/搜索