使用 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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务