使用apiDoc書(shū)寫(xiě)API文檔規(guī)范

首發(fā)于fxm5547的博客

詳細(xì)閱讀apiDoc官方文檔

項(xiàng)目中apiDoc文件結(jié)構(gòu)

  • 整體結(jié)構(gòu)


    圖片
  • apidoc.json

    圖片

  • common.php

    • 公共部分定義-權(quán)限(apiPermission)
      • 定義


        圖片
      • 使用


        圖片
    • 公共部分定義-狀態(tài)碼分組(apiSuccess、apiError)
      • 定義


        圖片
      • 使用


        圖片

        圖片
    • 公共部分定義-錯(cuò)誤響應(yīng)(apiError、apiErrorExample)
      • 定義


        圖片
      • 使用


        圖片
  • define.php

    • 公共部分定義-api分組
    • 定義


      圖片
    • 使用


      圖片

接口具體apidoc定義

  • 接口最新定義在代碼實(shí)現(xiàn)處,歷史版本定義在apidoc/history.php中。

  • 接口定義完整示例:


    圖片
  • @apiVersion

  • 目前只用到major和minor,patch始終為0。

  • @apiName

    • @api定義轉(zhuǎn)換而來(lái):
      @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

    • 接口權(quán)限,定義在apidoc/common.php,權(quán)限分為:
      • none:無(wú)需任何授權(quán);
      • token:需要用戶登錄授權(quán),可通過(guò)header AuthorizationCookie HBSID傳遞;
      • admintoken:需要管理員登錄授權(quán),可通過(guò)header AuthorizationCookie HBCPSID傳遞;
      • token || admintoken:用戶登錄授權(quán)或管理員登錄授權(quán)都可以;
        圖片
      • sign:需要簽名,一般用于服務(wù)端相互調(diào)用,詳見(jiàn) API HMAC-SHA1簽名。
  • @apiDescription

    • 盡可能詳細(xì)說(shuō)明接口的用途及相關(guān)邏輯,如
      @apiDescription 使用手機(jī)號(hào)找回密碼的第一步,調(diào)用該接口先驗(yàn)證用戶輸入的手機(jī)號(hào)是否已經(jīng)綁定某個(gè)帳號(hào),未綁定給出提示,已經(jīng)綁定則發(fā)送驗(yàn)證碼、重置密碼。
  • @apiParam

    • 準(zhǔn)確定義數(shù)據(jù)類型;
    • 準(zhǔn)確定義取值范圍,如{String{1..32}}{String{YYYY-mm-dd}}、{String="0","1"}
    • 準(zhǔn)確定義是否是可選參數(shù),可選參數(shù)帶[],如@apiParam {String} [stage];
  • @apiError

    • 公共錯(cuò)誤,直接使用apidoc/common.php中定義的錯(cuò)誤,如@apiUse InvalidToken
    • NotFoundValidationError不允許使用公共定義錯(cuò)誤(即不可使用@apiUse),需要準(zhǔn)確定義具體錯(cuò)誤,如:
      圖片
  • @apiSampleRequest

    • GET接口:不寫(xiě),默認(rèn)使用apidoc.jsonsampleUrl自動(dòng)組裝請(qǐng)求地址
    • 其他接口:@apiSampleRequest off,我們用Postman

接口分組

  • 一般按功能模塊分組,一個(gè)分組對(duì)應(yīng)一個(gè)或多個(gè)php文件,每個(gè)php文件只對(duì)應(yīng)一個(gè)分組;
  • 所有權(quán)限為admintoken的接口(不包括權(quán)限為token || admintoken的接口),放在該接口模塊的管理中心接口分組,admin.php文件中;
  • 所有權(quán)限為sign的接口(短信模塊除外),放在該接口模塊的內(nèi)部服務(wù)接口分組,internal.php文件中;

接口版本管理

  • 同一個(gè)大版本下,只有當(dāng)你的接口變更會(huì)影響到調(diào)用者時(shí),才需要升級(jí)minor版本(如果被修改的版本還沒(méi)有調(diào)用者,自然無(wú)需升級(jí)版本),如從1.0.0升至1.1.0。

  • 升級(jí)版本時(shí),需要將舊的apidoc注釋拷貝至apidoc/history.php,并升級(jí)apiVersion

    圖片

  • 升級(jí)接口大版本時(shí),拷貝舊版本文件目錄作為新版本并升級(jí)接口版本(如拷貝v1,重命名為v2,修改新版本中所有接口為2.0.0版本)。

  • 調(diào)用者在查看文檔時(shí),通過(guò)版本比較,可以輕易知曉新版本做了哪些變更。


    圖片

    圖片
  • 過(guò)期的接口,標(biāo)記@apiDeprecated,說(shuō)明應(yīng)該使用哪些接口替代:

    • 在過(guò)期接口apidoc注釋前增加:


      圖片
    • 文檔顯示:


      圖片

文檔生成

  • DEVQA服務(wù)器配置了定時(shí)任務(wù)(crontab -l查看),每隔1分鐘重新生成文檔。

    圖片

  • 新建接口模塊時(shí),

    • 需要修改定時(shí)任務(wù)crontab -e;
    • 在apidoc模板中新增導(dǎo)航vim /usr/lib/node_modules/apidoc/template/index.html
      圖片

api測(cè)試注意要點(diǎn)

  • 是否嚴(yán)格遵循本規(guī)范定義接口;
  • 錯(cuò)誤處理周全,不遺漏任何的錯(cuò)誤,錯(cuò)誤的message必須簡(jiǎn)潔明了并給予指引,如“開(kāi)團(tuán)時(shí)間為1-5天,請(qǐng)重新輸入”;
  • 接口權(quán)限控制是否OK,是否存在安全隱患;
  • 接口文檔和實(shí)現(xiàn)是否完全一致;
    -請(qǐng)求參數(shù)的名稱、類型、是否可選、描述都必須準(zhǔn)確和見(jiàn)名知意;
  • 返回參數(shù)的名稱、類型、描述都必須準(zhǔn)確詳盡。

修改后的多模塊模板

點(diǎn)擊下載apidoc-template.zip

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容