3. Flask路由与请求方法

Flask路由与请求方法 学习卡片

任务说明

本案例将使用 Flask 实现一个包含多个路由的 Web 服务,覆盖 GET 与 POST 两种请求方法,并演示查询字符串参数、路径参数以及表单数据的处理方式。完成本案例后,你将能够使用浏览器或命令行工具(如 curl)验证每个路由的行为。

实现代码

创建项目文件 app.py,代码如下:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 路由1:GET请求,返回欢迎信息
@app.route('/')
def index():
    return jsonify({
        "message": "欢迎访问Flask路由示例",
        "available_routes": ["/", "/user/<name>", "/search", "/submit"]
    })

# 路由2:GET请求,路径参数
@app.route('/user/<name>')
def get_user(name):
    return jsonify({
        "method": "GET",
        "path_parameter": name,
        "description": f"用户 {name} 的信息(演示路径参数)"
    })

# 路由3:GET请求,查询字符串参数
@app.route('/search')
def search():
    keyword = request.args.get('q', default='', type=str)
    page = request.args.get('page', default=1, type=int)
    return jsonify({
        "method": "GET",
        "query_keyword": keyword,
        "query_page": page,
        "description": "演示查询字符串参数解析"
    })

# 路由4:POST请求,表单数据
@app.route('/submit', methods=['POST'])
def submit():
    # 从表单中获取数据
    username = request.form.get('username', '')
    email = request.form.get('email', '')
    return jsonify({
        "method": "POST",
        "received_username": username,
        "received_email": email,
        "status": "数据接收成功"
    })

if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=5000)

运行与验证

依赖安装:确保已安装 Flask,使用命令 pip install flask。

启动服务:在项目目录下执行 python app.py,终端显示 Running on http://127.0.0.1:5000 即启动成功。

验证方法:打开新的终端窗口,依次执行以下命令并观察返回结果:

# 1. 访问根路由(GET)
curl http://127.0.0.1:5000/

# 2. 路径参数(GET)
curl http://127.0.0.1:5000/user/张三

# 3. 查询字符串参数(GET)
curl "http://127.0.0.1:5000/search?q=flask&page=2"

# 4. 表单提交(POST)
curl -X POST -d "username=alice&email=alice@example.com" http://127.0.0.1:5000/submit

判定标准:

  • 命令1返回包含 message 和 available_routes 的 JSON;
  • 命令2返回的 path_parameter 值为 张三;
  • 命令3返回的 query_keyword 为 flask,query_page 为 2;
  • 命令4返回的 received_username 为 alice,received_email 为 alice@example.com。

若以上返回结果与描述一致,则案例验证通过。

路由与请求处理示意

客户端 curl / 浏览器 Flask 应用 GET / 欢迎信息 GET /user/<name> 路径参数 GET /search 查询字符串参数 POST /submit 表单数据 JSON 响应 {"message": "..."} {"path_parameter": ...} {"query_keyword": ...} {"query_page": ...} {"received_username": ...} {"received_email": ...} {"status": "..."} HTTP 请求 JSON 数据 参数处理方式: • 路径参数:/user/<name> 中的 name 通过函数参数接收 • 查询参数:request.args.get('q') 获取 ?q= 后的值 • 表单数据:request.form.get('username') 获取 POST 表单字段