
如何快速實現REST API集成以優化業務流程
{
"name": "windeal",
"age": 25,
"email": "xxxx@163.com"
}
更新資源(PUT)
更新一個資源。例如,將 ID 為 1 的用戶信息更新為:
PUT /users/1
{
"name": "Jane",
"age": 30,
"email": "jane@example.com"
}
刪除資源(DELETE)
刪除一個資源。例如,刪除 ID 為 1 的用戶:
DELETE /users/1
GraphQL API官網: https://graphql.org/
GraphQL API的基本概念是使用GraphQL語言來描述API的查詢能力。客戶端通過GraphQL語言來描述所需的數據,而無需知道底層的數據結構和存儲方式。然后,服務器會根據客戶端的請求生成響應,并將數據發送回客戶端。
GraphQL API遵循以下設計原則:
示例一:查詢博客文章列表
query {
posts {
id
title
author {
id
name
}
}
}
在這個示例中,我們查詢了博客文章列表,每篇文章都有一個 ID、標題和作者。作者包括 ID 和名字。這個查詢對于一個顯示所有博客文章的列表的應用程序非常有用。
示例二: 創建新的博客文章
mutation {
createPost(input: {
title: "My new blog post"
content: "This is the content of my new blog post."
authorId: "123"
}) {
id
title
content
author {
id
name
}
}
}
在這個示例中,我們創建了一個新的博客文章。我們提供了文章的標題、內容和作者 ID。查詢返回了新創建的文章的 ID、標題、內容和作者。這個查詢對于創建新的博客文章的應用程序非常有用。
RPC API官網 https://grpc.io/
RPC(Remote Procedure Call)API 是一種遠程調用協議,它允許客戶端在不了解服務端實現細節的情況下,調用服務端上的函數或方法。RPC API 的主要特點是它可以跨越網絡,實現不同計算機之間的通信和數據交換。
gRPC 是一個高性能、開源的 RPC 框架,它可以在多種環境中運行,包括云端、數據中心和本地計算機。gRPC 使用 HTTP/2 協議進行通信,并利用 Protocol Buffers 作為接口定義語言和消息交換格式,以實現高效的數據傳輸和低延遲。
gRPC 的特點包括:
一個用戶信息查詢的示例:
定義接口:
syntax = "proto3";
service UserService {
rpc GetUserInfo (UserRequest) returns (UserResponse);
}
message UserRequest {
int32 user_id = 1;
}
message UserResponse {
string username = 1;
int32 age = 2;
bool gender = 3;
}
基于這個proto文件,可以生成客戶端和服務端的樁代碼。
在服務端,需要定義轉代碼中的handler接口。
在客戶端,可以通過樁代碼像調用本地函數一樣調用接口。
SOAP(Simple Object Access Protocol,簡單對象訪問協議)是一種基于 XML 的通信協議,它定義了用于 Web 上的應用程序之間通信的標準格式。 SOAP API 是基于 SOAP 協議的一種 API 設計方式,用于實現應用程序之間的數據交互和通信。
在 SOAP API 中,通信雙方都需要遵循一定的協議格式,以實現數據的傳遞和解析。SOAP API 由以下幾個關鍵概念組成:
SOAP API 的特點包括:
以下是一個基于 Amazon 的 Product Advertising API,使用 SOAP API 調用獲取某個關鍵詞的商品信息的示例。
SOAP 請求消息示例:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://soap.amazon.com">
<soapenv:Header/>
<soapenv:Body>
<api:ItemSearch>
<api:AssociateTag>Your_Associate_Tag</api:AssociateTag>
<api:Author>Stephen King</api:Author>
<api:Keywords>Carrie</api:Keywords>
<api:SearchIndex>Books</api:SearchIndex>
<api:ResponseGroup>Medium</api:ResponseGroup>
<api:Availability>Available</api:Availability>
<api:Sort>Title</api:Sort>
<api:Power><api:BrowseNode>17</api:BrowseNode>
</api:ItemSearch>
</soapenv:Body>
</soapenv:Envelope>
SOAP 相應消息示例
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://soap.amazon.com">
<soapenv:Header/>
<soapenv:Body>
<api:ItemSearchResponse>
<api:Items>
<api:Request>
<api:ValidRequest>true</api:ValidRequest>
</api:Request>
<api:Item>
<api:ASIN>B0000ZD9PC</api:ASIN>
<api:DetailPageURL>http://www.amazon.com/Carrie-Stephen-King/dp/B0000ZD9PC</api:DetailPageURL>
<api:ItemAttributes>
<api:Title>Carrie: A Novel</api:Title>
<api:Author>Stephen King</api:Author>
<api:ListPrice>
<api:Amount>699</api:Amount>
<api:CurrencyCode>USD</api:CurrencyCode>
</api:ListPrice>
</api:ItemAttributes>
</api:Item>
</api:Items>
</api:ItemSearchResponse>
</soapenv:Body>
</soapenv:Envelope>
在上面的示例中,我們使用 ItemSearch 方法,向 Amazon 發送一個查詢關鍵詞“Carrie”的 SOAP 請求,并包含關鍵詞、搜索目錄、響應類型、排序等參數。服務器返回查找結果,并在 SOAP 響應消息中返回 Amazon 的商品信息。開發者可以按照 SOAP 響應消息中的結構,解析并處理 Amazon 的商品信息。
下表列出了四種主流的API風格在使用場景、數據格式和接口性能等方面的比較:
API風格 | 使用場景 | 數據格式 | 接口性能 |
---|---|---|---|
SOAP API | 企業級應用、大規模數據請求與查詢、跨平臺應用 | XML | 低 |
RESTful API | 互聯網Web應用、處理實時數據、與前端結合 | JSON/XML | 高 |
GraphQL | 需要控制返回的數據字段、精細定制查詢 | 自定義查詢語言 | 高 |
gRPC | 對內應用程序、處理大量數據傳輸請求 | protobufs | 高 |
本文章轉載微信公眾號@Tech Lead 進階