示例代码
项目结构
project/
│── app.py # 主文件,初始化 Flask 应用并注册 Blueprint
│── routes/
│ ├── __init__.py # 标记 routes 目录为 Python 包
│ ├── users.py # 用户相关接口
│ ├── products.py # 产品相关接口
1. 主文件 (app.py)
app.py 是应用的入口,负责创建 Flask 应用、注册 Blueprint 并启动服务。
from flask import Flask
from routes.users import users_bp
from routes.products import products_bp
# 创建 Flask 应用
app = Flask(__name__)
# 注册 Blueprint
app.register_blueprint(users_bp, url_prefix='/users')
app.register_blueprint(products_bp, url_prefix='/products')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
说明:
- app.register_blueprint 注册每个 Blueprint,url_prefix 为路由添加前缀(如 /users、products)。
- debug=True 启用调试模式,host='0.0.0.0' 允许外部访问。
2. 用户接口 (routes/users.py)
定义用户相关的接口,使用 Blueprint 分组路由
from flask import Blueprint, jsonify, request
# 创建 Blueprint,命名为 'users'
users_bp = Blueprint('users', __name__)
# 模拟数据
users = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
# 获取用户列表
@users_bp.route('/', methods=['GET'])
def get_users():
return jsonify(users)
# 添加新用户
@users_bp.route('/', methods=['POST'])
def add_user():
new_user = request.get_json()
users.append(new_user)
return jsonify({"message": "用户添加成功", "user": new_user}), 201
说明:
- Blueprint('users', __name__) 创建名为 users 的 Blueprint。
- 路由 / 对应 /users/(由于 url_prefix='/users')。
- GET /users/ 返回用户列表,POST /users/ 添加新用户。
3. 产品接口 (routes/products.py)
定义产品相关的接口,同样使用 Blueprint。
from flask import Blueprint, jsonify
# 创建 Blueprint,命名为 'products'
products_bp = Blueprint('products', __name__)
# 模拟数据
products = [{'id': 1, 'name': 'Laptop'}, {'id': 2, 'name': 'Phone'}]
# 获取产品列表
@products_bp.route('/', methods=['GET'])
def get_products():
return jsonify(products)
说明:
- Blueprint('products', __name__) 创建名为 products 的 Blueprint。
- 路由 / 对应 /products/。
- GET /products/ 返回产品列表。
4. 包初始化文件 (routes/__init__.py)
此文件可以为空,仅用于标记 routes 目录为 Python 包。如果需要共享配置或初始化代码,可以在此处添加。
# 空文件,标记 routes 为 Python 包
运行和测试
1. 环境准备
- 确保已安装 Flask:pip install flask
- 创建上述项目结构并保存文件。
2. 运行应用
- 在项目根目录下运行:python app.py
- Flask 服务将在 http://127.0.0.1:5000 启动。
3. 测试接口
使用 curl、Postman 或浏览器测试:
- GET 用户列表:http://127.0.0.1:5000/users/
- 返回:[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
- 返回:[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
- POST 添加用户: http://127.0.0.1:5000/users/
- 返回:{"message": "用户添加成功", "user": {"id": 3, "name": "Charlie"}}
- 返回:{"message": "用户添加成功", "user": {"id": 3, "name": "Charlie"}}
- GET 产品列表:http://127.0.0.1:5000/products/
- 返回:[{"id": 1, "name": "Laptop"}, {"id": 2, "name": "Phone"}]
- 返回:[{"id": 1, "name": "Laptop"}, {"id": 2, "name": "Phone"}]