如何使用 Python Flask 构建 API
Python Flask 是一个流行的框架,广泛用于构建 Web 应用程序和 API。它为开发人员提供了一种快速、简单的方法来创建可供其他软件应用程序使用的 RESTful API。Flask 的轻量级特性和最低限度的设置要求,使其成为构建中小型 API 的绝佳选择。这使得 Flask 成为希望用 Python 构建健壮且可扩展的 API 的开发者的理想选择。以下示例将介绍如何创建一个简单的 Flask REST API 教程。
先决条件
在开始之前,需要确保满足以下先决条件:
- 安装 Python
 - 配置一个用于编辑代码的 IDE
 - 安装 Postman 以便测试 API 端点
 
当这些先决条件都准备就绪后,就可以开始进行教程了!
创建基础项目
首先,在选择的目录中创建一个名为 python-flask-api 的文件夹。
创建新文件夹后,在该文件夹的根目录打开终端,以便执行命令来构建和运行 Python 项目。将终端指向项目的根目录后,运行以下命令以初始化 Python Rest API Flask 项目并管理依赖项。
首先,使用 pip 在项目目录中安装 Flask。为此,运行以下命令:
pip install Flask
编写代码
在 app.py 文件的第一行代码中,导入 json、Flask、jsonify 和 request 模块:
import json
from flask import Flask, jsonify, request
接下来,通过在导入语句下方添加以下代码来创建一个新的 Flask 应用程序:
app = Flask(__name__)
为了给 API 提供一些可用的数据,定义一个包含 ID 和名称的员工对象数组:
employees = [
    { 'id': 1, 'name': 'Ashley' },
    { 'id': 2, 'name': 'Kate' },
    { 'id': 3, 'name': 'Joe' }
]
接着,定义 GET 请求到 /employees 端点的路由,以 JSON 格式返回所有员工:
@app.route('/employees', methods=['GET'])
def get_employees():
    return jsonify(employees)
除了 GET 方法外,还将定义 POST、PUT 和 DELETE 方法的路由,这些函数用于创建新员工以及根据给定的 ID 更新或删除员工:
@app.route('/employees', methods=['POST'])
def create_employee():
    global nextEmployeeId
    employee = json.loads(request.data)
    if not employee_is_valid(employee):
        return jsonify({ 'error': 'Invalid employee properties.' }), 400
    employee['id'] = nextEmployeeId
    nextEmployeeId += 1
    employees.append(employee)
    return '', 201, { 'location': f'/employees/{employee["id"]}' }
@app.route('/employees/<int:id>', methods=['PUT'])
def update_employee(id: int):
    employee = get_employee(id)
    if employee is None:
        return jsonify({ 'error': 'Employee does not exist.' }), 404
    updated_employee = json.loads(request.data)
    if not employee_is_valid(updated_employee):
        return jsonify({ 'error': 'Invalid employee properties.' }), 400
    employee.update(updated_employee)
    return jsonify(employee)
@app.route('/employees/<int:id>', methods=['DELETE'])
def delete_employee(id: int):
    global employees
    employee = get_employee(id)
    if employee is None:
        return jsonify({ 'error': 'Employee does not exist.' }), 404
    employees = [e for e in employees if e['id'] != id]
    return jsonify(employee), 200
一旦代码完成,最终的 app.py 文件应如下所示:
import json
from flask import Flask, jsonify, request
app = Flask(__name__)
employees = [
    { 'id': 1, 'name': 'Ashley' },
    { 'id': 2, 'name': 'Kate' },
    { 'id': 3, 'name': 'Joe' }
]
nextEmployeeId = 4
@app.route('/employees', methods=['GET'])
def get_employees():
    return jsonify(employees)
@app.route('/employees/<int:id>', methods=['GET'])
def get_employee_by_id(id: int):
    employee = get_employee(id)
    if employee is None:
        return jsonify({ 'error': 'Employee does not exist' }), 404
    return jsonify(employee)
def get_employee(id):
    return next((e for e in employees if e['id'] == id), None)
def employee_is_valid(employee):
    for key in employee.keys():
        if key != 'name':
            return False
    return True
@app.route('/employees', methods=['POST'])
def create_employee():
    global nextEmployeeId
    employee = json.loads(request.data)
    if not employee_is_valid(employee):
        return jsonify({ 'error': 'Invalid employee properties.' }), 400
    employee['id'] = nextEmployeeId
    nextEmployeeId += 1
    employees.append(employee)
    return '', 201, { 'location': f'/employees/{employee["id"]}' }
@app.route('/employees/<int:id>', methods=['PUT'])
def update_employee(id: int):
    employee = get_employee(id)
    if employee is None:
        return jsonify({ 'error': 'Employee does not exist.' }), 404
    updated_employee = json.loads(request.data)
    if not employee_is_valid(updated_employee):
        return jsonify({ 'error': 'Invalid employee properties.' }), 400
    employee.update(updated_employee)
    return jsonify(employee)
@app.route('/employees/<int:id>', methods=['DELETE'])
def delete_employee(id: int):
    global employees
    employee = get_employee(id)
    if employee is None:
        return jsonify({ 'error': 'Employee does not exist.' }), 404
    employees = [e for e in employees if e['id'] != id]
    return jsonify(employee), 200
if __name__ == '__main__':
    app.run(port=5000)
最后,添加一行代码以运行 Flask 应用程序,调用 run 方法并使 Flask 应用程序在端口 5000 上运行:
if __name__ == '__main__':
    app.run(port=5000)
运行和测试代码
编写并保存代码后,可以启动应用程序。在终端中执行以下命令来运行 Flask 应用:
python app.py
现在,API 已启动并运行。您可以通过 Postman 发送测试 HTTP 请求,向 http://localhost:5000/employees 发送 GET 请求。请求发送后,您应该在响应中看到 200 OK 状态代码以及返回的员工数组。
对于此测试,传入请求不需要请求正文。您可以在 Postman 中查看响应,确保 API 正常工作。
总结
通过上述步骤,成功使用 Python 创建了一个简单的 RESTful API Flask。可以根据需要扩展此代码,为应用程序构建更复杂的 API,满足具体需求。
热门API
- 1. AI文本生成
 - 2. AI图片生成_文生图
 - 3. AI图片生成_图生图
 - 4. AI图像编辑
 - 5. AI视频生成_文生视频
 - 6. AI视频生成_图生视频
 - 7. AI语音合成_文生语音
 - 8. AI文本生成(中国)
 
最新文章
- API协议设计的10种技术
 - ComfyUI API是什么:深入探索ComfyUI的API接口与应用
 - 从架构设计侧剖析: MCP vs A2A 是朋友还是对手?
 - Kimi Chat API入门指南:从注册到实现智能对话
 - 免费查询公司注册信息API的使用指南
 - 防御 API 攻击:保护您的 API 和数据的策略
 - 香港支付宝实名认证:是什么?怎么用?
 - 如何获取 Coze开放平台 API 密钥(分步指南)
 - 如何保护您的API免受自动化机器人和攻击 | Zuplo博客
 - ASP.NET Core Minimal APIs 入门指南 – JetBrains 博客
 - 什么是 OpenReview
 - Vue中使用echarts@4.x中国地图及AMap相关API的使用