上一篇認識了 HTTP Method,知道 Request 可以使用 GET、POST、PUT、DELETE 等不同的方法,來表示這次想要進行什麼操作。
例如:
GET /tasks → 取得作業資料
POST /tasks → 新增作業資料
前端有事情需要後端處理時,可以透過 HTTP 發出 Request,而後端處理完之後,再透過 Response 把結果回傳。
前端發出的 Request 會包含這次使用的 Method,並透過 URL(網址)指定 Request 要送到哪裡。
例如:
http://127.0.0.1:5000/tasks
這是一個網址,其中的:/tasks
就是 Path(路徑)。
如果這次請求使用的 Method 是 GET,我們平常會簡單寫成:
GET /tasks
意思就是:「對 /tasks 發出一個 GET Request。」
所以要注意,GET /tasks 並不是一個網址,而是把 Method + Path 放在一起表示。
後端收到 請求 (Request) 之後,就會根據 Path(路徑)和 Method(方法),找到對應的處理方式。
那為什麼我們前面的路徑會設計成 /tasks?
這就跟今天要介紹的 REST 有關。
REST = Representational State Transfer。
REST 是一種設計 Web API 的架構風格。
我們目前可以先把它簡單理解成一種設計 Web API 的方式。
在 REST API 中,其中一個很重要的概念就是 Resource(資源)。
Resource 可以先簡單理解成:「我們想要透過 API 操作的東西。」
例如我們現在想做的是一個作業管理 API,需要取得、新增、修改或刪除「作業」。
那麼「作業 Task」就可以看成一種 Resource。
如果今天管理的是使用者,那麼「使用者 User」也可以是一種 Resource。
例如:
Task(作業) → Resource
User(使用者) → Resource
在設計 REST API 時,通常會根據這些 Resource 來設計 Path。
例如:
/tasks → 和作業有關的路徑
/users → 和使用者有關的路徑
所以前面一直使用的 /tasks,並不是 Resource 本身。
Task 才是 Resource,而 /tasks 是根據這個 Resource 所設計的 Path。
有了 Path 之後,再搭配上一篇介紹的 HTTP Method,就可以表示我們想要對這個 Resource 做什麼。
例如:
GET /tasks → 取得作業
POST /tasks → 新增作業
把 GET /tasks 拆開來看:
Resource:Task → 我們要操作的是作業
Path:/tasks → 和作業有關的路徑
Method:GET → 這次想要取得資料
合起來:GET /tasks
就可以理解成:「對 /tasks 發出 GET Request,取得作業資料。」
目前可以先把 REST API 理解成:
把 API 要操作的東西看成 Resource,根據 Resource 設計對應的 Path,再搭配 HTTP Method 表示想要進行的操作。
例如:
GET /tasks → 取得作業
POST /tasks → 新增作業
REST 還有其他的設計原則,不過目前先理解 Resource、Path 和 HTTP Method 之間的關係就可以了。
到這裡,前面幾天介紹的東西也慢慢連起來了。
前端可以透過 HTTP 發出 Request,Request 會帶著 Method,並透過 URL 指定要送到哪裡;後端收到 Request 後進行處理,再透過 Response 把結果回傳。
而 REST 則提供了一種設計 Web API 的方式,讓我們可以圍繞 Resource 來安排 API 的 Path 與操作。
前面六天主要都在認識這些基本觀念。
下一篇就開始實際使用 Flask,建立第一個 Flask 後端程式。