| 類型 | 可見性 | 典型場景 | 安全級別 |
|---|---|---|---|
| 開放式 (Open/Public) | 互聯(lián)網(wǎng)任意用戶 | 天氣、地圖、社交登錄 | 中等(API Key) |
| 內(nèi)部 (Internal/Private) | 企業(yè)內(nèi)網(wǎng) | CRM、ERP、微服務(wù)調(diào)用 | 高(內(nèi)網(wǎng)+JWT) |
| 合作伙伴 (Partner) | 授權(quán)第三方 | 支付、物流、分銷 | 高(mTLS+OAuth) |
| 復(fù)合 (Composite) | 聚合多個(gè)后端 | 一鍵下單、庫存同步 | 高(統(tǒng)一網(wǎng)關(guān)) |
??? 寫完限速邏輯別忘了跑「代碼優(yōu)化」提示詞,一鍵診斷慢查詢與重復(fù)請求,讓接口響應(yīng)提速 30 %!
| 協(xié)議 | 數(shù)據(jù)格式 | 典型傳輸 | 優(yōu)勢 | 劣勢 | 適用場景 |
|---|---|---|---|---|---|
| REST | JSON | HTTP/1.1-2 | 簡單、緩存友好 | 多次往返、過度/不足獲取 | 通用 Web、移動后端 |
| RPC | JSON/Protobuf | HTTP/2、gRPC | 高性能、強(qiáng)類型 | 緊耦合、瀏覽器支持差 | 微服務(wù)、內(nèi)部通信 |
| SOAP | XML | HTTP + WS-* | 嚴(yán)格契約、事務(wù) | 臃腫、解析慢 | 企業(yè)集成、金融 legacy |
組件:
/api/v1/users/{id} Authorization: Bearer <token> { "name": "Alice" }示例:提交表單
POST /api/contact HTTP/1.1
Content-Type: application/json
{ "email": "user@example.com", "message": "Hello" }
核心思想:像調(diào)用本地函數(shù)一樣調(diào)用遠(yuǎn)程服務(wù)
gRPC 數(shù)據(jù)流:
Client Stub → Protobuf → HTTP/2 → Server Stub → Service
代碼體驗(yàn)(proto):
service OrderService {
rpc CreateOrder(CreateRequest) returns (Order);
}
適用:
信封結(jié)構(gòu):
<soap:Envelope>
<soap:Header>…</soap:Header>
<soap:Body>…</soap:Body>
<soap:Fault>…</soap:Fault>
</soap:Envelope>
特點(diǎn):
| 概念 | 定義 | 舉例 |
|---|---|---|
| API | 通信契約 | REST 端點(diǎn) /weather |
| Web Service | 基于 Web 的 API 子集 | SOAP 天氣服務(wù) |
| SDK | 開發(fā)工具包(含 API+庫+文檔) | AWS SDK for Python |
| 場景 | 首選協(xié)議 | 備選 |
|---|---|---|
| 對外移動/前端 | REST (JSON) | GraphQL |
| 內(nèi)部微服務(wù) | gRPC (RPC) | REST |
| 企業(yè) Legacy 集成 | SOAP | REST 包裝 |
| 實(shí)時(shí)雙向流 | WebSocket | gRPC streaming |
| 低功耗 IoT | MQTT | CoAP |
Q1. REST 和 RPC 沖突嗎?
→ 不沖突。REST 面向資源;RPC 面向動作。可共存(REST 外露,RPC 內(nèi)部)。
Q2. SOAP 過時(shí)了嗎?
→ 在新系統(tǒng)少見,但在金融、電信 Legacy 中仍大量存在,需兼容。
Q3. GraphQL 屬于哪一類?
→ 查詢協(xié)議,位于 REST 之上,解決過度/不足獲取問題,非獨(dú)立傳輸協(xié)議。
選對 API 類型與協(xié)議 = 降低集成成本 + 提升可維護(hù)性:
先用「代碼生成」快速產(chǎn)出 SDK 與重試邏輯,再用 KPI 面板持續(xù)監(jiān)控協(xié)議延遲、錯(cuò)誤率與緩存命中率,你的 API 將更快、更穩(wěn)地迎接高并發(fā)挑戰(zhàn)!??
原文鏈接: https://getstream.io/blog/api-protocols/