什麼是 RESTful API?

2023年2月4日

💎 加入 E+ 成長計畫 與超過 250+ 位軟體工程師一起在社群中成長,並且獲得更深入、系統性軟體工程內容

什麼是 API?

API 全名為 Application Programming Interface,最簡單的理解為,我們不需要知道他實際上是如何實作的,只要知道要怎麼使用它即可。舉例來說:就像你走進一間餐廳,在菜單上畫好品項後遞給老闆,老闆就能夠提供你需要的餐點,而你不需要去在意餐點是怎麼被實做出來的。

所以比起在意它實際上怎麼被製作出來的,我們更在意怎麼獲得想要的東西,因此會更在意:「輸入的方法」以及「輸出的結果」,對應上面的例子就是:「該如何點餐」以及「餐點的結果」。

什麼是 REST?

REST 全名為 Representational State Transfer,是一種軟體架構,他最初是用來管理複雜網路上的通訊指導方針指導方針建立。而 RESTful API 意旨遵循著 REST 架構風格的 API ,而 REST 架構風格需含以下原則:

  1. 統一介面:將操作的細節作抽象,並提供統一的操作方式和規格。
  2. 無狀態:無狀態意旨伺服器獨立於所有之前的請求,所以用戶端可以按任何順序去請求資源。
  3. 分層系統:用戶端不清楚伺服器端有幾層,甚至伺服器端可以再向其他伺服器端請求資源。
  4. 可快取性:用戶端在獲得第一次回應後快取一些資訊,然後後續會直接使用快取中獲得資訊。(例如:網站中每個頁首、頁尾、LOGO 等)
  5. 隨需編碼(code on demand):Server 可以隨時擴充功能,因應 Client 的即時需求。

什麼是 RESTful API?

是一種風格,他描述了如何實現 Web API 的架構,基於 HTTP 協定,用來建立分散式系統,並支援多種程式語言,他的優點包含:

  • 可擴展性:由於系統無需保留 Client 狀態,因此可以提高擴展效能。
  • 靈活性:由於 Client 與 Server 完全分離,因此分層的應用程式功能可以提供靈活性。
  • 獨立性:可以使用各種程式語言來編寫程式,不影響 API 的設計。

RESTful API 請求資源的方法

需要包含的元件為:

  • 唯一資源識別符: 伺服器通常使用統一的 URL 來執行資源識別。
  • 方法:通常用 HTTP 來實作,因此需要告訴 Server 用什麼樣的方法操作
    • GET:獲得資源
    • POST:新增資源
    • PUT:修改資源(若原本無資料則新增)
    • PATCH:修改資源(只修改部分資源)
    • DELETE:刪除資源
  • HTTP 標頭:Client 與 Server 之間的中繼資料,當中包含所需參數(路徑參數、Cookie 參數等)

回應狀態碼

狀態碼為 Server 對於 Client 請求的回應,用一個三位數的整數來表示伺服器回應的狀態。

1xx:代表 Request 已被接受,但需要繼續處理,由於 HTTP / 1.0 的協議中並沒有任何 1xx 得狀態碼,因此除了試驗以外,都禁止回傳 1xx 的回應。

2xx:表示 Request 已成功被接受。

3xx:代表 Client 需要再進一步的操作才能完成 Request,通常用來重新導向。

4xx:Client 端錯誤,包含未授權、無資源、參數錯誤等。

5xx:Server 端錯誤,無法完成對 Request 的處理。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們