如何使用Python中的Flask构建简单的REST API - Medium

作者:API传播员 · 2025-11-11 · 阅读时间:6分钟

APIs(Python中一个轻量级且功能强大的Web框架,可以快速高效地简化API的构建。

本文将详细介绍如何使用Flask构建一个简单的REST API,包括设置路由、处理不同的HTTP方法以及返回JSON响应与客户端交互。在阅读完本指南后,您将能够创建一个基础的REST API,并根据自己的项目需求轻松扩展。


设置开发环境

在开始编写API代码之前,我们需要先设置开发环境和项目结构,以确保开发过程井然有序。

步骤1:创建虚拟环境并安装Flask

为了避免项目依赖与其他Python包发生冲突,建议为每个项目创建一个虚拟环境。以下是创建虚拟环境的命令:

python -m venv venv
source venv/bin/activate

# 如果使用Windows命令提示符,请运行 venvScriptsactivate.bat
# 如果使用PowerShell,请运行 venvScriptsActivate.ps1

激活虚拟环境后,使用以下命令安装Flask:

pip install Flask

通过这种方式,我们可以有效管理项目依赖,并确保项目与系统中的其他Python包相互隔离。


步骤2:设置项目结构

创建一个用于存放项目文件的文件夹,以下是推荐的项目结构:

simple_rest_api/
├── app.py
└── requirements.txt
  • app.py:用于定义Flask应用程序和API路由。
  • requirements.txt:记录项目依赖,便于项目共享或部署。

在虚拟环境中运行以下命令,将当前环境中的依赖保存到requirements.txt文件中:

pip freeze > requirements.txt

完成环境设置后,我们就可以开始构建REST API了。


构建REST API

安装Flask后,我们可以开始创建API。以下将逐步介绍如何定义路由、处理请求以及返回JSON响应。

初始化Flask应用

app.py文件中,导入Flask并初始化应用程序:

from flask import Flask, jsonify, request

app = Flask(__name__)

定义路由和处理请求

接下来,我们将创建几个路由,每个路由对应API中的一个端点,用于处理不同的HTTP方法(如GET、POST、PUT和DELETE)。在本示例中,我们将构建一个简单的项目管理API,支持查看、添加、更新和删除项目。


GET请求 – 获取所有项目

以下是一个处理GET请求的路由,用于返回所有项目的列表:

@app.route('/items', methods=['GET'])
def get_items():
    return jsonify(items), 200

当客户端向/items发送GET请求时,此路由会以JSON格式返回项目列表。Flask的jsonify()函数可以将Python数据结构转换为JSON对象。


POST请求 – 添加新项目

以下是一个处理POST请求的路由,用于向项目列表中添加新项目:

@app.route('/items', methods=['POST'])
def add_item():
    new_item = request.get_json()
    new_item["id"] = len(items) + 1

# 分配唯一ID
    items.append(new_item)
    return jsonify(new_item), 201

在这段代码中:

  • request.get_json()用于获取请求中的JSON数据。
  • 为新项目分配一个唯一的ID。
  • 将新项目添加到items列表,并返回新增项目及201 Created状态码。

GET请求 – 获取特定项目

以下是一个根据ID获取特定项目的路由:

@app.route('/items/', methods=['GET'])
def get_item(item_id):
    item = next((item for item in items if item["id"] == item_id), None)
    if item:
        return jsonify(item), 200
    return jsonify({"error": "Item not found"}), 404

此路由会:

  • 根据ID查找项目。
  • 如果找到,返回项目及200 OK状态码。
  • 如果未找到,返回错误信息及404 Not Found状态码。

PUT请求 – 更新项目

以下是一个处理PUT请求的路由,用于更新指定ID的项目:

@app.route('/items/', methods=['PUT'])
def update_item(item_id):
    updated_data = request.get_json()
    for item in items:
        if item["id"] == item_id:
            item.update(updated_data)
            return jsonify(item), 200
    return jsonify({"error": "Item not found"}), 404

此路由会:

  • 获取请求中的新数据,并查找匹配ID的项目。
  • 如果找到,更新项目并返回200 OK状态码。
  • 如果未找到,返回404 Not Found状态码。

DELETE请求 – 删除项目

以下是一个处理DELETE请求的路由,用于删除指定ID的项目:

@app.route('/items/', methods=['DELETE'])
def delete_item(item_id):
    global items
    item = next((item for item in items if item["id"] == item_id), None)
    if item:
        items = [item for item in items if item["id"] != item_id]
        return jsonify({"message": "Item deleted"}), 200
    else:
        return jsonify({"error": "Item not found"}), 404

此路由会:

  • 查找指定ID的项目。
  • 如果找到,从列表中移除该项目并返回200 OK状态码。
  • 如果未找到,返回404 Not Found状态码。

运行API

app.py文件末尾添加以下代码以启动Flask开发服务器:

if __name__ == '__main__':
    app.run(debug=True)

运行脚本后,Flask服务器将启动,您可以通过http://127.0.0.1:5000访问API。可以使用Postmancurl测试各个端点。


总结

通过FlaskAPI开发。您可以在此基础上进一步扩展项目,构建更复杂的API。

原文链接: https://medium.com/@AlexanderObregon/how-to-build-a-simple-rest-api-with-flask-in-python-9adcd56cf3da