所有文章 > API开发 > 如何使用 Python Flask 构建 API
如何使用 Python Flask 构建 API

如何使用 Python Flask 构建 API

Python Flask 是一个流行的框架,广泛用于构建 Web 应用程序和 API。它为开发人员提供了一种快速、简单的方法来创建可供其他软件应用程序使用的 RESTful API。Flask 的轻量级特性和最低限度的设置要求,使其成为构建中小型 API 的绝佳选择。这使得 Flask 成为希望用 Python 构建健壮且可扩展的 API 的开发者的理想选择。以下示例将介绍如何创建一个简单的 Flask REST API 教程。

先决条件

在开始之前,需要确保满足以下先决条件:

  1. 安装 Python
  2. 配置一个用于编辑代码的 IDE
  3. 安装 Postman 以便测试 API 端点

当这些先决条件都准备就绪后,就可以开始进行教程了!

创建基础项目

首先,在选择的目录中创建一个名为 python-flask-api 的文件夹。

创建新文件夹后,在该文件夹的根目录打开终端,以便执行命令来构建和运行 Python 项目。将终端指向项目的根目录后,运行以下命令以初始化 Python Rest API Flask 项目并管理依赖项。

首先,使用 pip 在项目目录中安装 Flask。为此,运行以下命令:

pip install Flask

编写代码

app.py 文件的第一行代码中,导入 jsonFlaskjsonifyrequest 模块:

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,满足具体需求。

原文链接:How To Build an API With Python Flask

#你可能也喜欢这些API文章!