RESTful API:建立與轉移自主數位資產,擺脫廠商綁架
什麼是RESTful API?
在搞懂RESTful API之前,得先知道什麼是API。
API(Application Programming Interface,應用程式介面)就像軟體之間的「翻譯官」,幫不同的應用程式交換資料或功能。透過制定好的通訊規則,開發者就能用API跟其他系統順利對話。而RESTful API則是按照REST(Representational State Transfer,表述性狀態轉移)架構而設計的API。
什麼是REST架構?
REST是一套用在分散式系統(尤其是網路)中通訊的規則,特別常用在Web服務上。它讓不同軟體間能用簡單、標準的方式交換資料。REST的核心在於「資源」,像是用戶、文章、訂單這些基本單位,每個資源都有個獨一無二的地址(URL)。
比方說,RESTful API就像你去餐廳吃飯,菜單上的菜(資源)都有名字,你直接跟服務生說「我要這個」,服務生就能幫你搞定。它關心的是「東西」(資源),而不是「怎麼做」。反過來說,傳統API比較像你打電話到餐廳,得照著一堆嚴格步驟點餐,重點在「動作」或「服務」。在技術上,REST用URL來定位資源,再搭配HTTP方法(GET、POST、PUT等)來做事。
RESTful API的核心概念
REST把「資源」當主角,每個資源都能用URL找到。RESTful API會用HTTP方法來操作這些資源,然後用HTTP狀態碼告訴你結果。簡單來說,就像你跟服務生互動:
- 「給我看菜單」(GET):拿資料。
- 「我要點這道菜」(POST):加東西。
- 「把我的湯改辣一點」(PUT/PATCH):改東西。
- 「這道菜我不要了」(DELETE):刪東西。
服務生處理完後,會回你一個「狀態碼」:
- 200:沒問題,搞定了!
-
404:找不到你要的東西。
RESTful API的特點
無狀態(Stateless)
伺服器不需要儲存客戶端的資訊,而是客戶端透過每一次的請求將需求以及狀態資訊附加在裡面,然後伺服器端根據包含所有的必須的狀態資訊來處理請求。這樣的做法好處是伺服器不用記憶一堆東西,處理大量客人時也不會亂掉。
Client-Server架構
這個架構的目的就是將客戶端與伺服器端的關注點分離。舉例來說,這就像餐廳把「前台」和「後廚」分開。你(客戶端)負責點餐和吃,服務生跑去跟廚師(伺服器)說要做什麼。兩邊各做各的,前台不用管廚房怎麼炒菜,廚房也不用管你怎麼吃。這樣分工清楚,App或網頁只要專心畫漂亮介面,伺服器專心處理資料就行了。
快取(Cacheability)
客戶端和中間的傳遞者(像是代理伺服器或CDN)可以把回應結果暫存起來。如果快取機制設計得當,能大幅減少客戶端和伺服器之間的請求次數,甚至有時候完全不需要跟伺服器互動,進而提升效能。比如你常點「可樂」,服務生直接跟你說「有現貨,馬上拿給你」,不用跑去後面查存貨。RESTful API可以告訴你哪些東西能先存起來,下次要用時直接拿,速度快又省力。
統一介面(Uniform Interface)
是RESTful Web服務設計的核心概念之一,它要求伺服器用標準格式來傳輸資料。在REST架構中,把資源轉換成特定格式來傳輸。這個格式不一定要跟伺服器內部存放的方式相同。例如,伺服器可能用純文字存資料,但回傳給客戶端時,會轉換成HTML格式來顯示。
採用RESTful API架構的好處
你可能會好奇:「為什麼要把整個系統都換成這種架構?」。因為在科技時代,我們透過電子產品工作,把許多重要的資源存放在系統平台上(也就是數位資產),而這些資源都需要靠API來互通有無,若今天你的網站供應商沒有使用統一的準則,將來網站供應商無法繼續協助維護網站又或是惡意提高維運費用時,你很有可能因此付出高額的成本重新尋找可以合作的廠商,這就是所謂的廠商綁架(vendor lock-in)。除此之外,良好的RESTful API設計會考量安全性,確保只有經過授權的用戶才能存取數位資產。
使用RESTful API的主流社群網站
以下是我們經常使用的社群平台(包含但不限於),他們也使用了RESTful API來進行資料傳輸:
- Facebook(Graph API):提供廣泛的功能,包括存取用戶資料、貼文、粉絲專頁、社團、廣告等等。
- Instagram(Graph API):專注於圖片和影片內容,允許存取用戶個人檔案、媒體、Hashtag、限時動態等。
- Twitter(X) API:提供存取推文、用戶個人檔案、追蹤者、訊息、趨勢等資料,也支援發送推文等操作。
- LinkedIn API:著重於專業社交和職涯發展,提供存取用戶檔案、人脈、職位、公司資訊等功能。
- YouTubeData API:允許存取影片、頻道、播放清單、留言等資料,並可進行影片上傳等操作。
- TikTok API:提供存取影片、用戶個人檔案、Hashtag、追蹤者等資料,功能仍在持續發展中。
例如在YouTubeData API的官方範例中有寫到:
{
"kind": "youtube#videoListResponse",
"etag": ""UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA"",
"videos": [
{
"id": "7lCDEYXw3mM",
"kind": "youtube#video",
"etag": ""UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q"",
"snippet": {
"publishedAt": "2012-06-20T22:45:24.000Z",
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"title": "Google I/O 101: Q&A On Using Google APIs",
"description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg"
},
"medium": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg"
},
"high": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg"
}
},
"categoryId": "28"
},
"contentDetails": {
"duration": "PT15M51S",
"aspectRatio": "RATIO_16_9"
},
"statistics": {
"viewCount": "3057",
"likeCount": "25",
"dislikeCount": "0",
"favoriteCount": "17",
"commentCount": "12"
},
"status": {
"uploadStatus": "STATUS_PROCESSED",
"privacyStatus": "PRIVACY_PUBLIC"
}
}
]
}
(圖片與資料擷取自YouTubeData API官方範例)
總的來說,RESTful API就像統一規格過後的插頭,無論是哪個廠商施工的插座,只要遵循標準就能順利對接,避免將雞蛋放在同一個籃子裡也降低廠商綁架的風險,其輕量、標準、易於整合的特性,讓系統更快更穩,也能輕鬆因應不斷演進的科技環境。
鯊客科技全面使用RESTful API作為資料交換接口,統一以JSON格式傳輸資料,並且使用雲端服務PostMan 封裝客戶的數位資產,客戶可以隨時透過sharkEC API讀取數位資產資料,歡迎與鯊客科技洽詢更多相關訊息!