你是否曾經寫過 Web 後端、串接前端與資料庫?
你可能用過 fetch、axios、curl 去打某個 endpoint,但你真的了解什麼是 RESTful API 嗎?
RESTful API 是現代 Web 應用中最主流的通訊標準,無論你是前端、後端、全端,甚至是行動開發者,都無法繞過它。
本篇將帶你從零開始了解 REST 架構概念、API 設計原則,並實作一支最基本的 API,讓你真正搞懂 HTTP 背後的邏輯。
一、什麼是 REST 與 RESTful?
REST(Representational State Transfer)是一種 Web 架構風格,由 Roy Fielding 在 2000 年提出。
RESTful API 則是遵循 REST 原則設計的 Web API,透過 HTTP 協議實現資源的操作。
REST 基本概念:
-
一切皆資源(Resource)
-
使用標準 HTTP 方法:GET、POST、PUT、DELETE
-
透過 URL 定位資源
-
無狀態設計(Stateless)
-
回應通常為 JSON 格式
二、HTTP 方法對應 CRUD 操作
| 操作 | HTTP 方法 | 範例路徑 | 說明 |
|---|---|---|---|
| 取得資源 | GET | /users | 取得所有使用者 |
| 取得單筆 | GET | /users/1 | 取得 ID=1 使用者 |
| 新增資源 | POST | /users | 新增使用者 |
| 更新資源 | PUT | /users/1 | 更新 ID=1 使用者 |
| 刪除資源 | DELETE | /users/1 | 刪除 ID=1 使用者 |
這套規範就是 RESTful 設計的核心。
三、建立一支簡單的 RESTful API(使用 Flask)
以 Python Flask 為例,我們實作一支管理使用者資料的 API。
安裝 Flask:
pip install flask
程式碼:app.py
from flask import Flask, jsonify, request
app = Flask(__name__)
users = [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
]
@app.route('/users', methods=['GET'])
def get_users():
return jsonify(users)
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = next((u for u in users if u['id'] == user_id), None)
return jsonify(user) if user else ('User not found', 404)
@app.route('/users', methods=['POST'])
def add_user():
data = request.get_json()
user = {"id": len(users) + 1, "name": data['name']}
users.append(user)
return jsonify(user), 201
if __name__ == '__main__':
app.run(debug=True)
四、測試你的 API
你可以用以下方式測試:
-
使用
curl -
使用 Postman
-
使用前端的
fetch或axios -
直接開瀏覽器測 GET 請求
curl http://localhost:5000/users
五、RESTful API 設計原則補充
-
路徑使用名詞(資源)而非動詞
-
正確:
GET /users -
錯誤:
GET /getAllUsers
-
-
使用階層式路徑管理關聯資源
-
/users/1/posts表示 ID=1 使用者的文章
-
-
錯誤回應應使用正確 HTTP 狀態碼
-
404 Not Found、400 Bad Request、201 Created 等
-
-
資料格式一致(通常使用 JSON)
六、結語:學會 RESTful API,你就能串接萬物
RESTful API 是串接前後端的橋梁、整合外部服務的入口。
只要你有以下需求:
-
寫前端要抓資料
-
寫後端要提供資料
-
做行動 App 要跟伺服器同步
-
開發 IoT 設備需要與雲端互通
你就離不開 RESTful API。從今天起,實作一支自己的 API,理解 HTTP 的邏輯,為你的開發之路打下堅實基礎。
評論