API 設(shè)計和 CRUD:

因此,重點主要在于定義如何將 CRUD 操作暴露給與電子商務(wù) API 交互的用戶或系統(tǒng)。

CRUD 表示創(chuàng)建、讀取、更新、刪除。這些是任何數(shù)據(jù)驅(qū)動應(yīng)用程序的基本操作。

例如,要添加一個新產(chǎn)品(創(chuàng)建),您需要向 /api/products 發(fā)送一個 POST 請求,在請求體中發(fā)送產(chǎn)品詳細信息。

要檢索產(chǎn)品(讀取),則需要從 /products 發(fā)送 GET 請求獲取數(shù)據(jù)。

要更新產(chǎn)品信息(更新),我們需要向 /products/:id 發(fā)送 PUT 或 PATCH 請求,其中 id 是我們需要更新的產(chǎn)品的 id。

刪除與更新類似;我們向 /products/:id 發(fā)送 DELETE 請求,其中 id 是我們需要刪除(Delete)的產(chǎn)品。

通信協(xié)議和數(shù)據(jù)傳輸機制

另一部分是決定要使用的通信協(xié)議,如 HTTP、Web Sockets 等,以及數(shù)據(jù)傳輸機制:JSON、XML 或協(xié)議緩沖區(qū)。

RESTful API 就是這種情況,但我們也有 GraphQL 或 gRPC 范例

API范式

API 有不同的范式,每個范式都有自己的一套協(xié)議和標準。

REST(表征狀態(tài)傳輸)

優(yōu)點:客戶端向服務(wù)器發(fā)出的每個請求都必須包含理解和完成請求所需的全部信息。使用標準 HTTP 方法(GET、POST、PUT、DELETE)。便于不同客戶端(瀏覽器、移動應(yīng)用程序)使用。

缺點:這可能導致數(shù)據(jù)抓取過度或抓取不足,因為可能需要更多端點來訪問特定數(shù)據(jù)。

特點是支持分頁、過濾(限制、偏移)和排序。使用 JSON 進行數(shù)據(jù)交換。

GraphQL

優(yōu)點允許客戶端準確請求所需內(nèi)容,避免過度抓取和抓取不足。基于模式的強類型查詢。

缺點:復雜的查詢會影響服務(wù)器性能。所有請求都以 POST 請求的形式發(fā)送。

特點通常以 HTTP 200 狀態(tài)代碼響應(yīng),即使出現(xiàn)錯誤,也會在響應(yīng)正文中提供錯誤詳細信息。

gRPC(谷歌遠程過程調(diào)用)

優(yōu)點基于 HTTP/2 構(gòu)建,提供多路復用和服務(wù)器推送等高級功能。使用協(xié)議緩沖區(qū),這是一種語言中立、平臺中立、可擴展的結(jié)構(gòu)化數(shù)據(jù)序列化方式。有效利用帶寬和資源,尤其適合微服務(wù)。

缺點:與 JSON 相比,人類可讀性較差。需要 HTTP/2 支持。

特點是支持數(shù)據(jù)流和雙向通信,是服務(wù)器到服務(wù)器通信的理想選擇。

API設(shè)計中的關(guān)系

在電子商務(wù)環(huán)境中,可能存在用戶與訂單、訂單與產(chǎn)品等關(guān)系。

設(shè)計端點來反映這些關(guān)系非常重要。例如,在這種情況下,GET /users/{userId}/orders 應(yīng)獲取特定用戶的訂單。

查詢、限制和 GET 請求的冪等性

常見的查詢還包括用于分頁的 limit 和 offset,或用于過濾特定日期范圍內(nèi)產(chǎn)品的 startDate 和 endDate。這樣,用戶就可以檢索特定的數(shù)據(jù)集,而不會同時向系統(tǒng)或用戶提供過多的信息。

一個設(shè)計良好的 GET 請求是冪等的,這意味著多次調(diào)用它不會改變結(jié)果。

GET 請求絕不能更改數(shù)據(jù)。它們只用于檢索。

向后兼容性和版本控制:

在修改端點時,保持向后兼容性非常重要。這意味著要確保更改不會破壞現(xiàn)有客戶端。

版本控制:引入版本(如 /v2/產(chǎn)品)是處理重大變更的常見做法。

GraphQL 而言,在不刪除舊字段的情況下添加新字段(v2 字段)有助于在不破壞現(xiàn)有客戶端的情況下發(fā)展應(yīng)用程序接口。

速率限制和 CORS

另一種最佳做法是設(shè)置速率限制。這用于控制用戶在一定時間內(nèi)的請求數(shù)量。這對于保持 API 的可靠性和可用性至關(guān)重要。它還能防止 API 遭受 DDoS 攻擊。

常見做法是同時設(shè)置 CORS 設(shè)置 跨源資源共享(CORS)設(shè)置對網(wǎng)絡(luò)安全非常重要。它們可以控制哪些域可以訪問您的應(yīng)用程序接口,防止不必要的跨站交互。

原文鏈接:API design 101 from basics to best practices

上一篇:

從商業(yè)角度探討 API 設(shè)計

下一篇:

OpenAPI vs Swagger:哪個更適合您的開放API文檔設(shè)計
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費