成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Restful API 設計的八個訣竅

開發 前端
在設計 RESTful API 的路徑結構時,可以參考領域模型。在領域驅動設計思想中,領域模型構成了軟件的邏輯結構。

在設計 RESTful API 時,有幾個關鍵要點需要特別注意,因為這些要點如果處理不好,容易導致錯誤或降低 API 的可用性和維護性。

01 領域模型

在設計 RESTful API 的路徑結構時,可以參考領域模型。在領域驅動設計思想中,領域模型構成了軟件的邏輯結構。

這樣設計有幾個好處:

  • 領域模型往往都是名詞,和 API Path 保持一致。
  • 領域模型往往為樹形結構,可以很好地轉換為 API Path。
  • 團隊成員能保持風格統一的 API 設計。

圖片圖片

02 選擇合適的 HTTP Methods

HTTP 協議提供了非常多種 Methods,但對于應用系統而言,使用過多的 HTTP Methods 會給開發者帶來困擾。

因此,定義基本的幾個 HTTP Methods 可以簡化 API 設計,這取決于團隊風格。

例如,PATCH 在很多時候會給團隊造成困擾,開發者往往不能清晰地辨別在何種場景下使用 PATCH 還是 PUT,因此根據團隊約定,可以統一使用 PUT。

03 冪等

提前進行冪等性設計可以提高 API 的健壯性。

  • GET 類型的 API 具有天然的冪等性,所以避免在 GET 類型的 API 中實現數據的變更操作。
  • PUT、DELETE 類型的 API 應該特別注意實現上盡量冪等,這樣在 API 調用出錯重試時不會帶來意外的結果。
  • POST 為新增操作,理論上來說不應該實現為冪等,但在必要時可以通過輸入參數設計為冪等。

04 選擇合適的HTTP 狀態碼

和 HTTP Methods 類似,HTTP 狀態碼也非常多。根據經驗,開發者在選擇使用哪一個狀態碼時,非常容易犯錯,且難以在團隊內達成統一。

比較好的方法是,定義有限的 HTTP 狀態碼來使用即可,來簡化應用開發的難度。例如,當發生校驗錯誤時,統一返回 400,當發生業務錯誤時,統一返回 419。

05 版本控制

提前為 API 設計版本號可以簡化后期的改造和升級工作。

API 版本信息通常有三種方式:

  • 使用 Path 前綴,將版本號放到 API Path 的前面。
  • 使用 Query 參數。
  • 使用 Header 參數。

比較推薦的方法是使用 Path 前綴,對于提供者和消費者來說都非常容易理解,且不會侵入其它的業務參數。

06 語義化 API 路徑

讓 API Path 保持語義化可以增加 API 的辨識度,讓消費者更容易在文檔中找到合適的 API。

提高語義化的方法有:

  • 區分名詞的單復數,避免錯誤單詞拼寫。
  • 盡量使用資源名稱代替動作。
  • 如果實在無法避免動詞,也盡可能將動詞放到路徑末尾,并使用 POST method。

07 批量處理

提前為批量 API 設定一套規則,讓批量 API 更加語義化。我們可以進行約定:

  • 使用 batch/bulk 作為關鍵字,放置到路徑末尾。
  • 當需要批量查詢數據時,通過 Query 參數代替 Path 參數。

08 查詢語言設計

提前設計一套具有拓展性的查詢規則,可以讓 API 更加靈活。

  • 分頁:預留分頁參數關鍵字。
  • 排序:預留排序參數關鍵字,以及排序的方向。例如通過 sort=name:asc,age:desc 表達根據名稱正序,年齡倒序排序。
  • 過濾:設置靈活的過濾條件語法,可以定義一些指令來實現更加靈活的過濾方式。例如,
GET /v1/users?age=gt:20,lt:50&name=match:lisa&gender=eq:male

其中,gt 代表大于,lt 代表小于,match 代表模糊搜索,eq 代表完全匹配。

責任編輯:武曉燕 來源: ByteByteGo
相關推薦

2023-07-19 07:51:10

文檔對象模型DOM

2022-04-12 10:37:09

API安全網絡攻擊

2025-03-26 05:00:00

前端開發者DOM

2022-12-16 17:01:15

Web API開發

2016-12-30 14:47:21

設計RESTfulAPI

2016-01-29 10:06:47

UI設計標準

2017-01-05 09:59:45

2012-10-29 11:01:17

2017-04-20 12:51:28

2013-06-13 09:21:31

RESTful APIRESTfulAPI

2022-08-11 09:00:31

Audio APIWeb

2015-06-26 10:21:15

數據中心數據中心設計

2014-04-14 17:50:47

產品產品設計

2022-12-01 16:53:27

NPM技巧

2013-06-07 10:52:18

移動應用移動產品設計

2019-12-23 14:47:19

漏洞滲透測試錯誤姿勢

2022-06-15 14:37:30

元宇宙

2022-07-25 15:21:50

Java編程語言開發

2024-01-10 12:26:16

2024-09-30 13:14:01

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九色在线观看 | 黄色片免费 | 亚洲精品一区二区三区四区高清 | av片在线观看网站 | 在线看片网站 | 国产精品久久国产精品 | 成人精品一区二区三区四区 | www.国产一区 | 二区高清 | 亚洲1区| 91久久电影 | 亚洲91| 国产精品久久 | 久久久免费观看视频 | 欧美视频三区 | 97精品国产97久久久久久免费 | 亚洲高清在线视频 | 国产精品久久久久久久久久久久冷 | 永久av | 一级一片在线观看 | 日韩在线| 欧美一区日韩一区 | 激情五月婷婷 | 91精品国产综合久久久密闭 | 91精品国产综合久久小仙女图片 | 91亚洲国产精品 | 久久av网站 | 国产免费又黄又爽又刺激蜜月al | 草草视频在线播放 | 羞羞视频在线观看网站 | 亚洲激情在线观看 | 成人在线不卡 | 国产精品久久久久一区二区三区 | 日韩精品久久久久 | 欧美在线色视频 | 欧美激情在线精品一区二区三区 | 国产精品二区三区在线观看 | 一级黄色片在线看 | 免费小视频在线观看 | 精品国产欧美在线 | 久久88|