3. 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。
若以上返回结果与描述一致,则案例验证通过。