中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

API設計原則是什么

發布時間:2021-10-20 17:05:34 來源:億速云 閱讀:294 作者:柒染 欄目:大數據

API設計原則是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

你是否也感同身受?

  1. 對接XX業務時,XX業務具備的功能和API全靠跑業務負責人那反復逐個詢問、確認。用哪個API;怎么用;有沒有限制;等等

  2. 各個業務間,甚至同一業務內,API風格不統一。

    • API命名:按自然語義全翻譯的;按屬性角度定義的;按操作角度定義的;動賓、非動賓的;復數、非復數的;等等

    • API入參:帶Map的;相同語義字段名稱不一樣;

    • API出參:有包裝Resoponse的;直接返回結果數據的;相同數據,返回格式和字段名稱有差別的;

    • 錯誤信息:直接返回中文提示的;返回提示信息編碼的;返回異常類型的;等等

  3. XX業務API性能方面未知。

  4. 隨著業務的演進,開放的API持續在增加,但類同的很多

API編碼規范迫在眉睫


優秀API的特質

  1. 自解釋

    • 從API本身一眼就能看懂API是干什么的,支持的用法,適用的場景,異常的處理等

  2. 易學習

    • 有完善的文檔,以及提供盡可能多的示例和可copy-paste的代碼。

  3. 易使用

    • 功能強大,但使用簡單。不增加調用方的使用成本(例如要求業務方用API時需要額外的配置和依賴),不暴露復雜的細節、冗長的使用流程給調用方感知。調用方只做最小的感知和最少的傳參。

  4. 難誤用

    • 優秀的API可以使有經驗的開發直接使用API而不需要閱讀文檔。

    • 充分的靜態檢查、動態校驗、顯式的異常說明、有效的錯誤提示。


ZCY API 設計原則

1. 充分原則

不是隨便一個功能就要有個接口,也不是隨便一個需求就要加個接口。

每新建一個接口,要有充分的理由和考慮,即這個接口的存在是十分有意義和價值的。無意義的接口不僅增加了維護的難度,更重要是對于程序的可控性的大大降低,接口也會十分臃腫。

2. 單一視角原則

設計接口時,分析的角度要統一。否則會造成接口結構的混亂。例如:不要一會以角色的角度設計,一會兒就要以功能的角度設計。

推薦:以”屬性對象 + 行為”的視角定義API

3. 單一功能原則

每個API接口應該只專注一件事,并做好。產品概念簡單、關系清楚。功能模棱兩可,諸多特殊邏輯的API肯定不是個優雅的API,且會造成功能類似重復的API。

注:如果API它很難命名,那么這或許是個不好的征兆,好的名稱可以驅動開發、并且只需拆分與合并模塊即可。

功能大而全的API在靈活性、簡單性方面肯定捉襟見肘。定義API的粒度之前,建議先將業務分領域、劃邊界,以此來提取業務對象,然后再根據業務對象用例來設計單一功能的API。

比如:查詢會員,可能除了查詢會員表外還要獲取該會員的其他必要信息,但不要在查詢會員的同時還有修改權限等類似的其他業務功能,應該分成兩個接口執行。

4. 簡單原則

接口設計簡單、清晰。API執行的功能可以很豐富、很強大,但API聲明和用法一定要盡量的簡單,不能將功能的豐富通過復雜的用法來實現,這會導致API功能不單一,演進不可控。

最終的評審要看API的簡單易用程度。

  • 你寫的例子,能不能讓你的代碼看起來更簡單?

  • 你是不是強迫調用方關注/提供他們不在乎的選項/配置?

  • 有沒有毫無價值的額外步驟?

編寫的代碼一定要易于讀、易于理解,這樣別人才會欣賞,也能夠給你提出合理化的建議。相反,若是繁雜難解的程序,其他人總是會避而遠之的。

5. 抽象原則

API的入參、出參所述的對象、屬性,一定是按業務特性進行抽象后的實體。誤將底層數據模型概念如實的反應到API上。抽象API、抽象對象實體更宏觀,具有更好的適用性、兼容性、擴展性。

6. 兼容擴展原則

對擴展開放,對修改關閉。保證API的向后兼容。

擴展參數應當是便利的,保證后續類似的需求,可以在已有的API上通過兼容擴展的方式實現。

7. 最小驚訝原則

代碼應該盡可能減少讓讀者驚喜。業務API只需根據需求來設計即可,不需要刻意去設計一下復雜無用、華而不實的API,以免弄巧成拙。

8. 低耦合原則

API應該減少對其他業務代碼的依賴關系。低耦合往往是完美結構系統和優秀設計的標志。

耦合的種類:

  • 代碼實現業務逆向調用。

  • 條件邏輯依賴耦合。例如:此API在處理國稅網超訂單類型時,需要額外發送結算支付憑證上傳的事件MQ出來。

  • 耦合API無關的業務行為。例如:采購計劃鏈路日志API被調用時,若是項目采購委托單的情況,需要額外調用公告的API拉取鏈路信息,新建成為一條此委托單的一條鏈路日志。

9. 正交原則

正交性是指改變某個特性而不會影響到其他的特性。

API之間的功能應該成正交性,無功能重合。API之間應該是互相補充的關系。

10. 易測試原則

對于API調用者而言,API應該是可被測試且易于被測試的。測試API不需要依賴額外的環境、容器、配置、公共服務等。

對可測試友好的API也是可被有效集成測試的前提。

11. 統一原則

API要具備統一的命名、統一的入/出參規范、統一的異常規范、統一的錯誤碼規范、統一的版本規范等。

統一規范的API優點:

  • 易于被框架集成、處理

  • 有助于API調用方、API提供方開發經驗復用

  • 避免犯錯,避免誤用

看完上述內容,你們掌握API設計原則是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

api
AI

秀山| 始兴县| 十堰市| 黄石市| 漳浦县| 新郑市| 莱芜市| 深泽县| 米林县| 无为县| 乳源| 仙桃市| 城步| 龙川县| 泸州市| 侯马市| 社旗县| 会东县| 延庆县| 肇东市| 全椒县| 东辽县| 金湖县| 东乌珠穆沁旗| 罗江县| 宁武县| 清水河县| 浦东新区| 天台县| 辉县市| 中阳县| 永清县| 丹巴县| 凤阳县| 太白县| 蕲春县| 岱山县| 年辖:市辖区| 鹤庆县| 慈利县| 刚察县|