接口文檔設計


接口文檔設計分為兩部分:

一、對外接口設計規范,

  1. 提供完整的接口文檔
  2. 提供接口調用的代碼Demo

示例如下:

請求的基本參數

參數

參數名稱

類型

(長度范圍)

參數說明

是否可為空

樣例

基本參數

 

接口名稱

String(64)

 

不可空

send_goods_confirm_by_platform

 

合作者身份ID

String(16)

 

可空

2088001159940003

 

參數編碼字符集

String(10)

 

不可空

GBK

 

簽名

String(64)

 

不可空

e8qdwl9caset5zugii2r7q0k8ikopxor

 

簽名方式

String(10)

 

不可空

MD5

 

頁面跳轉同步返回頁面路徑

String(1000)

 

可空

 

 

備注

String(1000)

 

可空

 

同步返回時,需要的基本參數

參數

參數名稱

類型

(長度范圍)

參數說明

是否可為空

樣例

 

基本參數

 

 

成功標識

String(1)

 

不可空

T

 

 

合作者身份ID

String(16)

 

可空

2088001159940003

 

 

參數編碼字符集

String(10)

 

不可空

GBK

 

 

簽名

String(64)

 

不可空

e8qdwl9caset5zugii2r7q0k8ikopxor

 

 

簽名方式

String(10)

 

不可空

MD5

 

 

返回錯誤碼

String(30)

 

可空

PARTNER_ID_NOT_EXIST

 

 

返回錯誤原因

String(200)

 

可空

合作方Id不存在

 

 

備注

String(1000)

 

可空

 

 

二、內部接口規范,

  1. 發布façade接口jar包,包含了APIrequestresponse
  2. 提供接口對應的response返回碼說明,及接口所需屬性枚舉常量定義

示例如下:

接口名稱:

XXXXXXXXXXXXXXX

請求參數

屬性

描述

是否必填

字段類型

 

 

 

Y

String(32)

 

 

Y

String(32)

 

 

Y

String(32)

 

 

Y

String(32)

 

 

Y

String(32)

 

 

Y

Money

 

 

N

String(32)

 

 

N

String(32)

 

 

N

String(2)

 

 

N

String(32)

 

 

N

String(32)

 

 

N

String(64)

 

 

N

String(256)

 

 

N

String(12)

 

 

N

String(64)

 

 

N

String(64)

 

 

N

String(1)

 

 

 

String(1)

 

 

N

String(256)

 

 

N

String(2000)

 

 

 

 

 

返回參數

屬性

描述

是否必填

字段類型

 

 

返回碼

Y

String

 

返回信息

N

String

 

擴展信息

N

String

 

開發規范

  1. 版本控制git

  2. 開發流程git flow

接口

請求方式 url 動作 中文說明
GET /resources/ list 列表
POST /resources/ create 創建
GET /resources/:id retrieve 詳細
PUT /resources/:id update 更新
PATCH /resources/:id partial_update 部分更新
DELETE /resources/:id destroy 刪除

數據

  1. 請求支持form-date,json,x-www-form-urlencode

  2. 返回格式統一為json

  3. 一個請求對應一個serializer

錯誤

  1. 錯誤信息包含在返回內容里

  2. 不同的錯誤對應不同的錯誤信息代碼

  3. http錯誤碼按照標准用法使用

認證

  1. jwt

  2. token

  3. oauth2

權限

  1. 以中間件形式作為權限鑒別插件,根據http請求格式直接判斷權限

  2. 用戶登錄成功時,將用戶信息與權限信息緩存保證效率

日志

  1. 日志以中間件形式提供

  2. 根據業務需求氛圍入庫日志與普通日志

文檔(待完善)

根據上面的接口格式寫文檔

{
  "resources": { "list": { "params": {}, "response": {} }, "create": { "request": {}, "response": {} }, "retrieve": { "response": {} }, "update": { "request": {}, "response": {} }, "partial_update": { "request": {}, "response": {} }, "destroy": {} } }

測試

業務所需接口測試覆蓋率100%

部署

  • docker

  • docker-compose

  • docker-machine

  • docker-swarm

服務器資源監控

 

接口設計規范

 

 

 

 

 

 

 

 

 

 

浙江大學電子服務研究中心

 

 

首先,在閱讀本文檔前請務必確認您已經對面向對象的基本概念有所了解。

根據目前實驗室所使用的系統架構,制定本文檔,主要闡述一些service層和DAO層接口設計的基本原則和規范要求。

總體規范

  1. 接口中方法的返回不能為void,至少也要通知調用者,操作是否成功
  2. 接上條,凡是返回操作是否成功的方法,返回類型要設置為int而不是boolean
  3. 方法名只能使用英文,盡量簡單易懂,駝峰規則,首字母小寫,不得含有數字
  4. 方法名最好使用動賓結構。
  5. 接口中所有方法都必須寫注釋
  6. 接口中所有方法都必須是public
  7. 每個方法的位置應當是明確的,不要將不屬於某接口的方法放入該接口中,也不要寫功能重復的方法

service層接口規范

service層是每個模塊邏輯處理的位置,一個service對應一個action和若干個DAOservice中每一個方法都來自頁面功能的需求,所有service層的接口都必須繼承自BaseService,所有方法都應當以BaseForm(或其子類)的對象作為參數,根據需要可以添加PageInfo的對象,其他參數一般不要添加。

以下方法是在BaseService中已經聲明的:

/**

 * 添加一條新數據

 * @return 消息編碼

 */

public int addData(BaseForm thisForm);

/**

 * 編輯一條數據

 * @return 消息編碼

 */

public int editData(BaseForm thisForm);

/**

 * 刪除一條或多條數據

 * @return 消息編碼

 */

public int removeData(BaseForm thisForm);

/**

 * 返回一條數據,並用於頁面展示

 * @return BaseForm 

 */

public BaseForm showData(BaseForm baseForm);

實例:

/**

 * 分頁顯示照片

 */

public List<DataPhoto> getDataPhotoByConditionsInPage(PageInfo pageInfo, DataPhotoForm dataPhotoForm);

 

/**

 * 獲取某個相冊下的所有照片

 */

public List<DataPhoto> getAllDataPhoto(DataPhotoForm dataPhotoForm);

 

/**

 * 刪除某個相冊下的所有照片

 */

public int removeDataPhotoByGroup (DataPhotoForm dataPhotoForm);

 

/**

 * 獲取某相冊相片及回復

 */

public Map<Integer, List<DataPhotoReply>> getDataPhotoAndReplyByGroup (DataPhotoForm dataPhotoForm);

 

DAO層接口規范

DAO層的作用是操作數據庫,每一個接口對應數據庫中的一個表,可以被多個service調用。DAO層接口中所有的方法都與數據庫的“增刪改查”相聯系。所有的DAO層接口都必須繼承自BaseDAO

以下是BaseDAO中已經聲明的方法:

/**

 * 將一個Model添加進數據庫

 */

public int insertModel(BaseModel model);

/**

 * 更新Model

 */

public int updateModel(BaseModel model);

/**

 * 刪除一條或多條數據

 */

public int deleteModels(int[] ids);

實例:

/**

 * 分頁顯示照片

 */

public List<DataPhoto> getDataPhotoByConditionsInPage(PageInfo pageInfo, DataPhoto dataPhoto);

/**

 * 獲取某個相冊下的所有照片

 */

public List<DataPhoto> getAllDataPhotoByGroup(DataPhoto dataPhoto);

/**

 * 刪除某個相冊下的所有照片

 */

public int deleteDataPhotoByGroup(DataPhoto dataPhoto);

/**

 * 獲取相片及其回復

 */

public Map<Integer, List<DataPhotoReply>> getDataPhotoAndReplyByGroup (DataPhoto dataPhoto);

/**

 * 插入一條數據后,立刻返回該條數據id

 */

public int getPhotoIdRightNow();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM