成人免费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

2025-03-26 05:00:00

前端開發者DOM

2022-04-12 10:37:09

API安全網絡攻擊

2022-12-16 17:01:15

Web API開發

2022-08-11 09:00:31

Audio APIWeb

2014-04-14 17:50:47

產品產品設計

2015-06-26 10:21:15

數據中心數據中心設計

2022-12-01 16:53:27

NPM技巧

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-07 10:52:18

移動應用移動產品設計

2016-12-30 14:47:21

設計RESTfulAPI

2012-11-20 10:01:40

程序員

2018-08-21 05:03:04

NV overlay網絡虛擬化網絡

2019-12-24 13:34:24

滲透測試網絡攻擊漏洞

2022-12-15 16:38:17

2022-12-07 12:33:22

云計算

2018-01-16 00:27:59

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 丁香六月激情 | 国产中文一区二区三区 | 不卡视频一区 | 亚洲精品视频观看 | 亚洲欧洲一区二区 | 久久综合成人精品亚洲另类欧美 | 欧美一级高潮片免费的 | 亚洲第1页| 亚洲欧美自拍偷拍视频 | 中文精品视频 | 久久精品一级 | 久久久久99 | 国产ts人妖另类 | 中文在线一区 | 日本午夜网| 国产精品资源在线 | 91在线视频国产 | 国产精品揄拍一区二区久久国内亚洲精 | 午夜一级大片 | 亚洲一区二区免费 | 日韩中文不卡 | 97国产超碰| 精品久久久久一区二区国产 | 欧美综合久久久 | 华人黄网站大全 | 亚洲国产成人精品女人久久久 | 成人免费观看男女羞羞视频 | 国产一区二区黑人欧美xxxx | 中文在线日韩 | 久久久久久国产精品 | 在线观看视频一区 | 国产精品视频网站 | 成人免费一区二区三区牛牛 | av小说在线| 精品在线免费观看视频 | 4hu最新网址| 在线视频中文字幕 | 亚洲精品成人在线 | 日韩精品免费视频 | 欧美色专区| 91精品国产91久久久久久 |