005HTTP 方法与 RESTful API
·
第五章:HTTP 方法与 RESTful API
5.1 常用 HTTP 方法
5.1.1 方法说明
| 方法 | 作用 | 是否幂等 |
|---|---|---|
| GET | 获取资源 | 是 |
| POST | 创建资源 | 否 |
| PUT | 更新资源(整体替换) | 是 |
| PATCH | 更新资源(部分修改) | 否 |
| DELETE | 删除资源 | 是 |
| HEAD | 获取响应头,不返回响应体 | 是 |
| OPTIONS | 获取资源支持的方法或跨域预检请求 | 是 |
可视化示意
客户端请求服务器:
GET -> /users/123 获取用户信息
POST -> /users 创建新用户
PUT -> /users/123 更新用户信息(整体)
PATCH -> /users/123 更新用户信息(部分)
DELETE -> /users/123 删除用户
Python 实践
import requests
# GET
r = requests.get("https://httpbin.org/get")
print(r.json())
# POST
r2 = requests.post("https://httpbin.org/post", json={"name":"Alice"})
print(r2.json())
# PUT
r3 = requests.put("https://httpbin.org/put", json={"age":26})
print(r3.json())
# DELETE
r4 = requests.delete("https://httpbin.org/delete")
print(r4.json())
5.2 RESTful API 设计原则
5.2.1 资源为中心
-
URL 代表资源,而不是动作
-
例如:
-
/users→ 用户资源集合 -
/users/123→ 用户 123
-
-
不用
/getUser、/createUser这种动词
5.2.2 使用 HTTP 方法操作资源
-
GET → 获取
-
POST → 创建
-
PUT → 更新(整体)
-
PATCH → 更新(部分)
-
DELETE → 删除
5.2.3 状态码表示操作结果
-
200 OK → 成功获取资源
-
201 Created → 创建成功
-
400 Bad Request → 请求错误
-
404 Not Found → 资源不存在
-
500 Internal Server Error → 服务器错误
5.3 Python REST API 实践(Flask)
5.3.1 安装 Flask
pip install flask
5.3.2 创建简单 REST API
from flask import Flask, request, jsonify
app = Flask(__name__)
# 模拟数据库
users = []
# 获取所有用户
@app.route("/users", methods=["GET"])
def get_users():
return jsonify(users)
# 创建用户
@app.route("/users", methods=["POST"])
def create_user():
data = request.json
users.append(data)
return jsonify(data), 201
# 更新用户
@app.route("/users/<int:user_id>", methods=["PUT"])
def update_user(user_id):
data = request.json
if user_id < len(users):
users[user_id] = data
return jsonify(data)
return {"error":"User not found"}, 404
# 删除用户
@app.route("/users/<int:user_id>", methods=["DELETE"])
def delete_user(user_id):
if user_id < len(users):
user = users.pop(user_id)
return jsonify(user)
return {"error":"User not found"}, 404
if __name__ == "__main__":
app.run(debug=True)
5.3.3 测试 API
- 使用 Postman 或 requests 发送请求:
import requests
# 创建用户
r = requests.post("http://127.0.0.1:5000/users", json={"name":"Alice"})
print(r.json())
# 获取用户列表
r2 = requests.get("http://127.0.0.1:5000/users")
print(r2.json())
5.4 小结
-
HTTP 方法决定资源操作
-
RESTful API 以资源为中心、使用状态码表示结果
-
Python Flask 可以快速创建 REST API
-
实践中可以使用 GET/POST/PUT/PATCH/DELETE 对资源进行操作
更多推荐


所有评论(0)