第五章: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

  • 使用 Postmanrequests 发送请求:
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 对资源进行操作


Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐