你瀏覽的是我們在Google的加速版網頁,你可以點選Logo回到主網站取得更多的資訊
加入LINE@好友 隨時掌握SEO最新趨勢

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讀取數位資產資料,歡迎與鯊客科技洽詢更多相關訊息!