介面設計需要考慮的方面(摘后整理)

2021-09-24 18:59:11 字數 2536 閱讀 7127

原則一:必須符合restful,統一返回格式,約定業務層錯誤編碼,每個編碼可以攜帶可選的錯誤資訊。

原則二:命名必須規範、優雅。

原則三:單一性。

單一性是指介面要做的事情應該是乙個比較單一的事情,比如登陸介面,登陸完成應該只是返回登陸成功以後一些使用者資訊即可,但很多人為了減少接**互,返回一大堆額外的資料。

比如有人設計乙個使用者列表介面,介面他返回每一條資料都是包含使用者了一大堆跟另外無關的資料,結果一問,原來其他無關的資料是他下一步想要獲取的,想達成資料的懶載入。

原則四:可擴充套件。

介面擴充套件性,是指設計介面的時候多想想多種情況,多考慮各個方面,其實我覺得單獨將擴充套件性放在這裡也是不妥的,感覺說的跟單一性有點相反的意思,其實這個不是這個意思。

這邊的擴充套件性是指我們的介面充分考慮客戶端,想想他們是如何呼叫的,他要怎樣使用我的**,他會如何擴充套件我的**,不要把過多的工作寫在你的介面裡面,而應該把更多的主動權交給客戶程式設計師。

這些人將乙個頁面展示就用乙個介面實現,而不考慮這些資料是不是屬於不同的模組、是不是屬於不同的展示範疇、結果下次視覺一改,整個介面又得重寫,不能復用。

原則五:必須有文件。

良好的介面設計,離不開清晰的介面文件表述。文件表述一定要足夠詳細

原則六:產品心。

所以我覺得作為乙個服務端後台開發人員應該要有產品心,特別是對於互動文件應該好好理解,因為這些都會對我們的介面設計有很大的影響。

我在設計介面的時候就很常發現很多互動文件根本就走不通,產品沒有考慮到位,互動文件缺失,這時候作為乙個開發要主動推動,完善。

原則七:第三方服務介面資料能快取就快取。

原則八:第三方服務需要做降級。

原則九:建議消除單點。

原則十:介面粒度要小。

原則十一:客戶端能處理的邏輯就不要給服務端處理,減少服務端壓力。

原則十二:資源預載入。

原則十三:不要過度設計。

原則十四:快取盡量不要穿透。

原則十五:介面能快取就快取。

原則十六:思辨大於執行

介面的命名。   —— restful命名規範,都要是名詞,見名知意

請求引數。      ——請求引數設定,要考慮介面擴充套件性、考慮介面的粒度。

支援的協議。  —— 明確協議型別

tps、併發數、響應時長。  —— 從介面顆粒度較小出發,考慮分布式快取等。

資料儲存。db選型、快取選型。  ——  db考慮是否要分庫分表, 採用db+分布式快取模式。

是否需要依賴於第三方。    ——  第三方介面資料是否可以快取並使用,服務降級

介面是否拆分。 —— 介面顆粒度要小,橫向、縱向的拆分。

介面是否通用、有擴充套件性。—— 考慮適配性

介面是否需要冪等。 —— 通俗的意思就是防止重複提交。 前端交換上設計防止重複提交,後端根據請求中某個特徵字段,快取並判斷是否已經存在。

9.1.同步鎖(單執行緒,集群可能會失效)

9.2.分布式鎖如redis(實現複雜)

9.3.業務欄位加唯一約束(簡單)

9.4.令牌表+唯一約束(簡單推薦)

9.5.mysql的insert ignore或者on duplicate key update(簡單)

9.6.共享鎖+普通索引(簡單)

9.7.利用mq或者redis擴充套件(排隊)

9.8. 其他方案如多版本控制mvcc 樂觀鎖 悲觀鎖 狀態機等。。。

10.  防刷。 —— 會話的校驗及有效時間,令牌表+唯一約束是不是就可以

11. 介面限流、降級。—— 配置介面最大tps ,熔斷降級

12. 負載均衡器支援。 —— 借助nginx

13. 如何部署,是否存在單點。 —— 去單點,集群部署。高可用,還有災備。

14. 是否需要服務治理。 —— 服務治理可以控制到單個api上下線。

15. 介面是否資源包、預載入還是內建。 ——靜態資源快取, h5 hybird模式,還有nginx快取靜態資源。

16. 是否需要本地快取。是否需要分布式快取、快取穿透怎麼辦。 —— 本地快取在集群模式下,資料同步會存在問題;而且節點異常後要考慮資料恢復,所以本地快取要根據場景謹慎使用。使用分布式快取可以增加應用程式的效能和效率,但是介面要對請求字段進行檢查,針對資料庫中肯定不存在的條件字段,直接返回,而不是呼叫後端查詢,導致快取穿透。

redis快取穿透、快取雪崩和快取擊穿。

快取穿透,是指查詢乙個資料庫一定不存在的資料。

17.  是否需要白名單。

API介面設計要考慮的因素

一 介面版本化 生產環境中,如果沒有版本控制的程式變更會導致呼叫介面的相關方頻繁的跟著變更,假設相關方沒有及時的跟著變更,那麼系統就會報錯,從而影響到使用者的使用及體驗,使其對整個系統的運營都是不利的,介面對接的難度也會不斷的加大。如果介面能夠有版本的控制,則公升級系統的主動權就掌握在相關方,這樣當...

薦 使用者介面設計規則方面的好書

gui設計禁忌 程式設計師和網頁設計師介面設計必讀 譯者 王蔓 劉耀明等譯 出版社 機械工業出版社 本書作者jeff johnson是ui wizards 的諮詢顧問,他從1978年以來就一直作為一名軟體設計師 可用性測試師 經理以及研究者在人際互動領域開展工作。本書對於讀者的要求較高,只有有相當軟...

薦 使用者介面設計規則方面的好書

gui設計禁忌 程式設計師和網頁設計師介面設計必讀 譯者 王蔓 劉耀明等譯 出版社 機械工業出版社 本書作者jeff johnson是ui wizards 的諮詢顧問,他從1978年以來就一直作為一名軟體設計師 可用性測試師 經理以及研究者在人際互動領域開展工作。本書對於讀者的要求較高,只有有相當軟...