談談接口協議


什么是協議:

所謂的協議就是指大家都認同的一個標准規范,並且大家都承諾嚴格按照標准細節來執行。

 

前后端開發的協議:

站在一個前端的角度,我是這么來看待一個接口應該具有的細節的

1. 請求的方式

  1.1 盡量參考RESTFUL的方式來設計,如讀取(GET),新建(POST),修改(PUT),刪除(DELETE),通過HTTP本身的含義來減少參數的傳遞

  1.2 尤其要注明不同模塊應該要有同一個風格的的請求方式,例如用GET來讀取數據那么所有的讀取操作都應該是GET

 

2. 請求的參數:

  2.1 參數的傳遞命名要統一,如分頁時的結構為{pageNo,pageSize, query}

  2.2 每個不同的模塊,請求參數的風格要保持一致

 

3. 接口的狀態:成功、失敗

  3.1 狀態的描述應該盡量簡單

  3.2 如果有額外的內容,應該要有一個定義好的狀態碼,並可以根據狀態進行異常的細節說明。

  3.3 通常情況下要求后端不能返回500異常

 

4. 接口的響應:

  4.1 相同的操作類型,響應的數據結構要一致,如摘取列表的結果都為{total, items}

  4.2 數據的控制參數(如分頁數據,條目計數等,是否只讀)  

 

前端更關注的細節:

  1. http 響應異常

    1.1 這類型的異常通常是不可以預知的

    1.2 把常見的異常碼進行處理,如401,404,408,504等等

    1.3 在http模塊把這個內容進行同化並向后傳遞,讓后面的代碼可以無差別處理這部分異常  

    1.4 通過navigator.connection.onchange來監聽網絡的變化,優化網絡異常體驗

  2. 超時的處理

  通過我們通過OAuth的方式進行鑒權,在一定的時間后超時是肯定的,但怎么樣可以給到用戶一個更好的體驗

    2.1 把TOKEN的超時節點記錄在localstorage中,每次進入系統就去查看是否需要刷新TOKEN

    2.2 與后端商定使用refreshToken來更新TOKEN,當TOKEN超時后,攔截當前的所有請求,並同時請求新的TOEKN和refreshToken,在完成刷新TOKEN再執行被攔截的請求

 

通過框架來對接協議:

 在前后端協議能夠被很好地執行后,我們便可以通過框架的方式把相關的細節封裝起來

1. 封裝請求工具:主要包括URL處理、參數處理、服務端異常及HTTP異常處理、異常說明、回調數據預加工

2. API層封裝:

  2.1 返回數據的加工,使之適合狀態層消費。

  2.2 標准化數據輸出:每個API的接口出來的結構要統一,如{succes, message, data}

  2.3 建議通過ts來開發API支,使用interface來約束每個API接口的結果,把常用的操作直接封裝在上級class中

  2.2 請求防抖處理

結語:

好的接口定義可以直接降低前端很大一部分的工作量,實際開發中有很多操作可以直接通過上級類封裝好,並且代碼也更容易穩定下來。


免責聲明!

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



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