RESTful API 設計最佳實踐

設計RESTful API時,需要遵循一些最佳實踐,以確保API的可讀性、可維護性和一致性。

路徑名稱避免動詞

使用HTTP方法表達資源操作行為,而不是將行為動詞定義到路徑中。

curl -X GET http://httpbin.org/orders

curl -X GET "http://httpbin.org/getOrders"

URI 使用復數形式

使用復數形式可以更清晰地表達資源的集合。

curl -X GET "http://httpbin.org/orders"

curl -X GET "http://httpbin.org/order"

善用 HTTP 狀態碼

使用標準狀態碼可以幫助快速識別問題。

版本管理

隨著業務需求的變更,已經上線的API需要對應調整。引入API版本管理可以保證歷史API正常使用,同時迭代新的API以滿足新的業務需求。

curl  http://httpbin.org/v1/orders

curl http://httpbin.org/v2/orders

Apache APISIX 如何助力RESTful API

Apache APISIX是一個動態、實時、高性能的API網關,可以在任何RESTful API服務上運行,并使用插件來添加新的服務和擴展其功能。

分層系統:支持業務邏輯和安全邏輯的分割

APISIX可以在業務服務器前面加一層認證邏輯,保護上游服務,實現業務邏輯和安全邏輯的高效解耦。

APISIX 的作用

Layered system:多負載均衡協議支持

APISIX作為API網關,可以設立在客戶端和服務端之間,完成不同的負載需求。支持的負載均衡算法包括roundrobin、chash、ewma和least_conn。

統一接口:使歷史API更加RESTful

對于已經存在很久的歷史API,如果沒有很好地遵循RESTful API準則,可以在不改造原有API邏輯的情況下,通過APISIX重新封裝新的API以滿足不同的業務場景。

使用 proxy-rewrite 改寫客戶端請求

例如,歷史版本API有 /getOrder 接口,可以通過 proxy-rewrite 插件將API請求代理到歷史API上。

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"methods": ["GET"],
"uri": "/orders",
"plugins": {
"proxy-rewrite": {
"uri": "/getOrder",
"scheme": "http",
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:80": 1
}
}
}'

使用 response-rewrite 插件改寫服務端響應

當歷史API存在響應狀態碼不規范時,可以通過 response-rewrite 代理response響應從而達到修改響應狀態碼的目的。

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"methods": ["GET"],
"uri": "/orders",
"plugins": {
"response-rewrite": {
"status_code": 201,
"body": "{"code":"ok","message":"new json body"}",
"vars":[
[ "status", "==", 200 ]
]
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:80": 1
}
}
}'

FAQ

問:RESTful API的優勢有哪些?

答:RESTful API的優勢包括客戶端與服務端關注點分離、無狀態特性使得應用更易擴展、容易實現緩存策略提升系統性能和用戶體驗。

問:如何設計一個符合RESTful風格的API?

答:要設計一個符合RESTful風格的API,需要遵循使用HTTP方法表達資源操作行為、URI使用復數形式、善用HTTP狀態碼、版本管理等最佳實踐。

問:Apache APISIX如何幫助實現RESTful API?

答:Apache APISIX作為一個動態、實時、高性能的API網關,可以運行在任何RESTful API服務上,使用插件添加新的服務和擴展功能,支持業務邏輯和安全邏輯的分割,以及使歷史API更加RESTful。

問:為什么要使用API版本管理?

答:API版本管理可以在不影響現有客戶端使用歷史API的情況下,迭代新的API以滿足新的業務需求,保證了歷史API的正常使用和新API的引入。

問:如何通過APISIX使歷史API更加RESTful?

答:可以通過APISIX的proxy-rewriteresponse-rewrite插件,在不改造原有API邏輯的情況下,重新封裝新的API以滿足RESTful API準則。

總結

本文詳細介紹了RESTful API的概念、核心約束條件、設計最佳實踐,以及Apache APISIX如何助力RESTful API的實現。希望本文能幫助您深入了解RESTful API,并在實際開發中運用這些最佳實踐,構建高效、可擴展的API服務。

上一篇:

聯絡中心 AI 的 Apigee 最佳實踐

下一篇:

使用 Apigee 優化 API 管理成本的 6 種方法
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

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

#AI深度推理大模型API

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

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