詳細閱讀apiDoc官方文件
- 詳細閱讀官方文件:apidocjs.com
專案中apiDoc檔案結構
-
整體結構
-
apidoc.json
-
common.php
- 公共部分定義-許可權(apiPermission)
- 定義
- 使用
- 公共部分定義-狀態碼分組(apiSuccess、apiError)
- 定義
- 使用
- 公共部分定義-錯誤響應(apiError、apiErrorExample)
- 定義
- 使用
- 公共部分定義-許可權(apiPermission)
-
define.php
- 公共部分定義-api分組
- 定義
- 使用
介面具體apidoc定義
-
介面最新定義在程式碼實現處,歷史版本定義在apidoc/history.php中。
-
介面定義完整示例:
-
@apiVersion
-
目前只用到major和minor,patch始終為0。
-
@apiName
- 從
@api
定義轉換而來: 如@api
為:@api {put} /user/babies/:baby_id 修改寶寶資訊
, 則@apiName
為:@apiName put/user/babies/:baby_id
, 則解析後的ID為;put_user_babies__baby_id
(用於apidoc.json的order介面排序)。
- 從
-
@apiGroup
- 介面分組,定義在
apidoc/define.php
,如@apiGroup babyGroup
。
- 介面分組,定義在
-
@apiPermission
- 介面許可權,定義在
apidoc/common.php
,許可權分為:none
:無需任何授權;token
:需要使用者登入授權,可通過header Authorization
和Cookie HBSID
傳遞;admintoken
:需要管理員登入授權,可通過header Authorization
和Cookie HBCPSID
傳遞;token || admintoken
:使用者登入授權或管理員登入授權都可以;sign
:需要簽名,一般用於服務端相互呼叫,詳見 API HMAC-SHA1簽名。
- 介面許可權,定義在
-
@apiDescription
- 儘可能詳細說明介面的用途及相關邏輯,如
@apiDescription 使用手機號找回密碼的第一步,呼叫該介面先驗證使用者輸入的手機號是否已經繫結某個帳號,未繫結給出提示,已經繫結則傳送驗證碼、重置密碼
。
- 儘可能詳細說明介面的用途及相關邏輯,如
-
@apiParam
- 準確定義資料型別;
- 準確定義取值範圍,如
{String{1..32}}
、{String{YYYY-mm-dd}}
、{String="0","1"}
; - 準確定義是否是可選引數,可選引數帶
[]
,如@apiParam {String} [stage]
;
-
@apiError
- 公共錯誤,直接使用
apidoc/common.php
中定義的錯誤,如@apiUse InvalidToken
; NotFound
和ValidationError
不允許使用公共定義錯誤(即不可使用@apiUse
),需要準確定義具體錯誤,如:
- 公共錯誤,直接使用
-
@apiSampleRequest
- GET介面:不寫,預設使用
apidoc.json
的sampleUrl
自動組裝請求地址 - 其他介面:
@apiSampleRequest off
,我們用Postman
- GET介面:不寫,預設使用
介面分組
- 一般按功能模組分組,一個分組對應一個或多個php檔案,每個php檔案只對應一個分組;
- 所有許可權為
admintoken
的介面(不包括許可權為token || admintoken
的介面),放在該介面模組的管理中心介面分組,admin.php
檔案中; - 所有許可權為
sign
的介面(簡訊模組除外),放在該介面模組的內部服務介面分組,internal.php
檔案中;
介面版本管理
-
同一個大版本下,只有當你的介面變更會影響到呼叫者時,才需要升級minor版本(如果被修改的版本還沒有呼叫者,自然無需升級版本),如從1.0.0升至1.1.0。
-
升級版本時,需要將舊的apidoc註釋拷貝至
apidoc/history.php
,並升級apiVersion
-
升級介面大版本時,拷貝舊版本檔案目錄作為新版本並升級介面版本(如拷貝v1,重新命名為v2,修改新版本中所有介面為
2.0.0
版本)。 -
呼叫者在檢視文件時,通過版本比較,可以輕易知曉新版本做了哪些變更。
-
過期的介面,標記
@apiDeprecated
,說明應該使用哪些介面替代:- 在過期介面apidoc註釋前增加:
- 文件顯示:
文件生成
-
DEVQA伺服器配置了定時任務(
crontab -l
檢視),每隔1分鐘重新生成文件。 -
新建介面模組時,
- 需要修改定時任務
crontab -e
; - 在apidoc模板中新增導航
vim /usr/lib/node_modules/apidoc/template/index.html
;
- 需要修改定時任務
api測試注意要點
- 是否嚴格遵循本規範定義介面;
- 錯誤處理周全,不遺漏任何的錯誤,錯誤的message必須簡潔明瞭並給予指引,如“開團時間為1-5天,請重新輸入”;
- 介面許可權控制是否OK,是否存在安全隱患;
- 介面文件和實現是否完全一致; -請求引數的名稱、型別、是否可選、描述都必須準確和見名知意;
- 返回引數的名稱、型別、描述都必須準確詳盡。