上一篇認識了 API 和 Endpoint,知道前端發出的 Request 會送到 API 中對應的 Endpoint,再由後端進行處理。
例如:/tasks
可以先理解成這次的 Request 是跟「作業」有關。
但只知道 Request 要送到 /tasks 還不夠
因為我們可能是想查看作業、新增作業、修改作業,也可能是刪除作業。
那後端要怎麼知道我們到底想做什麼呢?
這時候就會用到 HTTP Method(HTTP 方法)。
上一篇有提到,HTTP 是 Request 和 Response 在傳遞時所遵守的一套通訊規則。
而在一個 HTTP Request 裡,會使用 Method 來表示這次的請求想要進行什麼操作。
在 REST API 中,常見的 Method 有:
假設我們有一個 Endpoint:/tasks
如果今天發出:GET /tasks
可以把它拆成:GET → 想要取得資料 + /tasks → 要處理的是作業 =「我想取得作業資料。」
如果換成:POST /tasks
可以理解成:「我想新增一筆作業資料。」
所以即使都是 /tasks,使用不同的 HTTP Method,就可以表示不同的操作。
例如:
GET /tasks → 取得作業
POST /tasks → 新增作業
PUT /tasks/1 → 修改編號 1 的作業
DELETE /tasks/1 → 刪除編號 1 的作業
並不是後端看到 /tasks 這個名字後,自己猜出我們想做什麼。
而是我們在寫後端程式的時候,就會先設定好不同的 Method 要怎麼處理。
例如之後使用 Flask-RESTX 時,會看到類似這樣的程式:
@api.route('/tasks')
class TaskList(Resource):
def get(self):
# 處理 GET /tasks
...
def post(self):
# 處理 POST /tasks
...
當收到 GET /tasks 的 Request 時,Flask 就會找到對應的 get() 來處理。
如果收到的是 POST /tasks,則會找到對應的 post() 來處理。
可以先簡單整理成:
Endpoint:告訴後端 Request 要送到哪裡。
HTTP Method:表示這次 Request 想要進行什麼操作。
兩個搭配起來,後端就可以知道這次 Request 應該交給哪一段程式處理。
不過看到這裡可能又會有一個問題:
為什麼我們會用 GET 取得資料、用 POST 新增資料?API 的網址和操作又應該怎麼設計呢?
下一篇就來認識 REST,看看 REST API 到底是什麼。