前言
這次很難得寫一些「網頁開發」的雜談,就當作是 2025 年開春的第一篇文章!
有在 follow 我的粉絲應該都知道,平常我在師大念研究所,還在軟體業當 Junior 工程師。
在事情很多的情況下,很難在下班的時候練 (整理) 技術文章...
所以趁開學前,趕快來寫一下跟網頁開發相關的文章,順便讓自己複習一下!
這篇文章主要介紹什麼是 RESTful API,從一開始的 API 到 REST 風格都會聊到。
一開始文章會引用其他人的說法,最後融入自己的看法變成觀念。
我在底下的「參考文章」區塊,有推薦寫得超好的技術文章,很推大家去看看~
API
前輩 itsems 在介紹 API 文章中提到:
「API,全名 Application Programming Interface (應用程式介面),
是品牌開發出的一種接口,讓第三方可以額外開發、應用在自身的產品上的系統溝通介面。」
我的想法:
1. 在實際理解 RESTful API 之前,先來看看什麼是 API。
2. API 的全名是「應用程式介面」,乍看之下有點難理解:
其實它指的是「一個軟體的接口」,能夠使外部資源連結到這個軟體 (存取資料庫)。
舉例:
如果今天我們到訂房網站,輸入國家、價格等資訊,它就會顯示相對應的飯店。
有可能訂房網站的背後擁有這些飯店的 API ,這樣它才能夠存取這些飯店的資訊。
RESTful API 定義
微軟在訓練課程提到:
「表現層狀態轉移 (Representational State Transfer) 是建立 Web 服務的架構樣式。」
「遵守 REST 的 Web 服務 API 稱為 RESTful API。」
我的想法:
1. 看完 API 之後,現在來聊聊 RESTful API,我們先看 REST。
2. REST 全名是「表現層狀態轉移」(Representational State Transfer, REST)。
3. 其實 REST 本身是一種「軟體設計模式」,原本是用來管理複雜的網路通訊流程,後來被廣泛
應用在軟體開發的情境中。
4. 如果有一個 Web API 服務走的是 REST 風格,就會叫它 RESTful API。
RESTful API 項目
微軟在訓練課程提到:
「RESTful API 包含 3 個主要項目:」
「1. 基底 URI」
「2. HTTP 方法,例如 GET、POST、PUT、PATCH 或 DELETE。」
「3. 資料的媒體類型,例如 JavaScript 物件標記法 (JSON) 或 XML。」
我的想法:
剛才大致了解 API 和 RESTful API 的關係,現在來看 RESTful API 包含哪些項目:
1. URI:最常見的 URI 就是 URL,平常看到的「網址」就是 URL。
例如:https://college.com.tw/student/1
2. HTTP 方法:客戶端與伺服器端的溝通方式。
例如:GET (顯示資料)、POST (新增資料)、PUT (完整更新資料)、DELETE (刪除資料)
3. 資源類型:資料的回傳型態,常見有「JSON」或 XML,JSON 長得像下圖:
RESTful API 特性
Amazon 在這篇文章有說明 RESTful API 的特性:
「1. 無狀態」
「2. 可快取性」
我的想法:
1. 無狀態:伺服器端 (Server) 不會記住以前客戶端 (Client) 的請求 (Request),統一由客戶端整理資訊給伺服器端,這樣稱為「無狀態」。
2. 可快取性:
以往客戶端發送請求給伺服器端後,伺服器端就會拋回相對應的資訊給客戶端。
這時候伺服器端可以允許客戶端「快取」資訊,這樣伺服器端就不用回傳相同的資訊給客戶端。
RESTful API 範例
身為一位後端工程師,對於每一個 Function 的定義,可能都不一樣。
我拿學生資料做新增、讀取、修改、刪除的示範:
上面每一個動作,都有包含 2 個路由 (Route) 範例,是不是很眼花撩亂...
如果現在改用 RESTful API 的話:
這樣上面的 URL 就清楚很多了,只是要額外對應不同的 HTTP 方法。
工程師團隊就可以擁有一個「共識」去定義網址的名稱!
今天就跟大家介紹到這邊,如果有問題可以在下方跟我聊~
我是 W 先生,我們下次見!
順便打個廣告:我預計在 2025 上半年舉辦我的碩士論文訪談,詳情可以參考這裡。
延伸閱讀
參考文章
什麼是 RESTful API?– RESTful API 介紹 – AWS
API 是什麼? RESTful API 又是什麼?. API ? RESTful API ? HTTP ? | by itsems | itsems_frontend | Medium
[不是工程師] 休息(REST)式架構? 寧靜式(RESTful)的Web API是現在的潮流?
🔥 馬上追蹤本站,千萬別錯過最新文章~