使用 Flask 快速构建你的第一个 Python Web API
对于许多 Python 开发者来说,构建一个 Web API 是一项非常常见且实用的技能。无论是为前端应用提供数据,还是为微服务架构创建一个组件,Python 都能提供强大而简洁的工具。在本教程中,我们将使用 Flask,一个轻量级的 Web 框架,来分步创建一个简单的 RESTful API。www.g7ffk.ipluskids.com
什么是 Flask?www.ot1p7.ipluskids.com
Flask 是一个被称为 "微框架" 的 Python Web 开发库。它的核心非常简单且易于扩展,不强制使用特定的项目结构或依赖。这使得它非常适合初学者和快速原型开发。要开始我们的项目,首先需要通过 pip 安装 Flask。
pip install Flask
创建你的第一个应用www.ej483.ipluskids.com
安装完成后,我们就可以创建一个最基础的 Flask 应用了。在你的项目目录下,新建一个名为 app.py 的文件。在这个文件中,我们将导入 Flask 类,创建一个应用实例,并定义一个路由。路由的作用是将一个 URL(比如网站的根目录 /)绑定到一个 Python 函数上。
from flask import Flask
# 创建 Flask 应用实例
app = Flask(__name__)
# 定义一个路由,处理对网站根目录的访问
@app.route('/')
def hello_world():
return "Hello, World!"
# 确保这个脚本被直接执行时才启动开发服务器
if __name__ == '__main__':
app.run(debug=True)
动态路由与参数www.fwyq4.ipluskids.com
静态的 "Hello, World" 虽然简单,但实际应用中我们经常需要处理动态的 URL。例如,我们可能想根据用户名显示不同的用户信息。Flask 通过在路由中使用尖括号 <variable_name> 来轻松实现这一点。这个变量会作为参数传递给你的视图函数。www.i5rhm.ipluskids.com
# 在 app.py 中添加以下路由
@app.route('/user/<username>')
def show_user_profile(username):
# f-string 用于格式化字符串,将用户名嵌入到返回的文本中
return f'User: {username}'
处理 POST 请求www.sdn9h.ipluskids.com
到目前为止,我们的路由都只响应 GET 请求(浏览器默认的请求类型)。一个完整的 API 通常还需要处理 POST 请求,用于创建新资源。我们可以在 @app.route() 装饰器中通过 methods 参数来指定允许的 HTTP 方法。同时,我们可以使用 Flask 的 request 对象来获取客户端发送的数据,例如 JSON 格式的数据。www.khp6v.ipluskids.com
# 需要从 flask 中导入 request 和 jsonify
from flask import request, jsonify
@app.route('/api/data', methods=['POST'])
def handle_data():
# 获取请求体中的 JSON 数据,并将其转换为 Python 字典
data = request.get_json()
# 简单的数据验证
if not data or 'name' not in data:
return jsonify({"error": "Missing 'name' in request body"}), 400
# 在这里,你可以处理数据(例如,保存到数据库)
print(f"Received data: {data}")
# 返回一个包含确认信息的 JSON 响应
return jsonify({"message": f"Data received for {data['name']}"}), 201
返回结构化的 JSON 响应www.9nudn.ipluskids.com
现代 API 之间通信的标准格式是 JSON。虽然你可以直接返回一个 Python 字典,但最佳实践是使用 Flask 提供的 jsonify 函数。它会创建一个带有正确 Content-Type 头(application/json)的 Response 对象,这对于客户端正确解析响应至关重要。下面我们创建一个返回用户列表的 GET 端点。ocr.gdpingjia.com
# 模拟一个用户数据库
users = [
{"id": 1, "name": "Alice", "email": "alice@example.com"},
{"id": 2, "name": "Bob", "email": "bob@example.com"}
]
@app.route('/api/users', methods=['GET'])
def get_users():
# jsonify 会将 Python 字典或列表转换为 JSON 响应
return jsonify(users)
现在,你可以运行 python app.py,并使用 Postman 或 curl 等工具来测试你创建的这些 API 端点了。ptd.gdpingjia.com

