如何在 Ubuntu 上使用 Flask 创建 REST API如何在 Ubuntu 上使用 Flask 创建 REST API如何在 Ubuntu 上使用 Flask 创建 REST API如何在 Ubuntu 上使用 Flask 创建 REST API
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Ubuntu 上使用 Flask 创建 REST API

发表 admin at 2025年2月28日
类别
  • 未分类
标签

介绍

在本教程中,您将学习如何使用 Flask(一个轻量级 Python Web 框架)创建简单的 REST API。我们将介绍设置 Flask 应用程序、定义路由、处理请求和返回 JSON 响应的基础知识。在本教程结束时,您将拥有一个可以扩展并与其他应用程序集成的可用 API。

先决条件

  • 运行 Ubuntu 的服务器和具有 sudo 权限的非 root 用户以及活动防火墙。有关如何设置的指南,请从此列表中选择您的发行版并遵循我们的初始服务器设置指南。请确保使用受支持的 Ubuntu 版本。

  • 熟悉 Linux 命令行。有关命令行的介绍或复习,您可以访问 Linux 命令行入门指南

  • 对 Python 编程有基本的了解。

  • Ubuntu 系统上安装了 Python 3.7 或更高版本。要了解如何在 Ubuntu 上运行 Python 脚本,您可以参考我们的如何在 Ubuntu 上运行 Python 脚本教程。

第 1 步 — 设置 Flask 环境

Ubuntu 24.04 默认附带 Python 3。打开终端并运行以下命令来仔细检查 Python 3 安装:

root@ubuntu:~# python3 --version
Python 3.12.3

如果您的计算机上已安装 Python 3,则上述命令将返回当前安装的 Python 3 版本。如果尚未安装,您可以运行以下命令并安装 Python 3:

root@ubuntu:~# sudo apt install python3

接下来,您需要在系统上安装 pip 软件包安装程序:

root@ubuntu:~# sudo apt install python3-pip

安装完 pip 后,让我们安装 Flask。

您将通过 pip 安装 Flask。建议在虚拟环境中执行此操作,以避免与系统上的其他软件包发生冲突。

root@ubuntu:~# python3 -m venv myprojectenv
root@ubuntu:~# source myprojectenv/bin/activate
root@ubuntu:~# pip install Flask

第 2 步 - 创建 Flask 应用程序

下一步是为 Flask 应用程序编写 Python 代码。要创建新脚本,请导航到您选择的目录:

root@ubuntu:~# cd ~/path-to-your-script-directory

在目录中,创建一个新的 Python 文件 app.py, 并导入 Flask。然后,初始化 Flask 应用程序并创建基本路由。

root@ubuntu:~# nano app.py

这将打开一个空白的文本编辑器。在这里写下你的逻辑或复制以下代码:

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return jsonify(message="Hello, World!")
In-memory data store
items = [{"id": 1, "name": "This is item 1"}, {"id": 2, "name": "This is item 2"}]

第 3 步 — 创建 RESTful 路由

在本节中,我们将在 Flask 应用程序中定义与用户可以在 API 上执行的不同操作相对应的路由。每个路由将处理特定的 HTTP 方法。

GET、POST、PUT 和 DELETE。这些方法对应于持久存储的四个基本操作——通常称为 CRUD(创建、读取、更新、删除)。

将以下路由添加到您的 app.py python 脚本中:

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return jsonify(message="Hello, World!")
In-memory data store
items = [{"id": 1, "name": "This is item 1"}, {"id": 2, "name": "This is item 2"}]
GET request: Retrieve all items
@app.route('/api/items', methods=['GET'])
def get_items():
    return jsonify(items)
GET request: Retrieve a specific item by ID
@app.route('/api/items/<int:item_id>', methods=['GET'])
def get_item(item_id):
    item = next((item for item in items if item["id"] == item_id), None)
    if item is None:
        return jsonify({"error": "Item not found"}), 404
    return jsonify(item)
POST request: Create a new item
@app.route('/api/items', methods=['POST'])
def create_item():
    new_item = {"id": len(items) + 1, "name": request.json.get('name')}
    items.append(new_item)
    return jsonify(new_item), 201
PUT request: Update an existing item
@app.route('/api/items/<int:item_id>', methods=['PUT'])
def update_item(item_id):
    item = next((item for item in items if item["id"] == item_id), None)
    if item is None:
        return jsonify({"error": "Item not found"}), 404
    item['name'] = request.json.get('name', item['name'])
    return jsonify(item)
DELETE request: Delete an item
@app.route('/api/items/<int:item_id>', methods=['DELETE'])
def delete_item(item_id):
    global items
    items = 
  • != item_id] return '', 204 if __name__ == "__main__": app.run(debug=True)

    让我们更多地了解每个函数的作用:

    • Flask 导入:代码从 Flask 导入必要的组件:Flask、jsonify 和 request。

    • 内存中数据存储:items 是一个简单的字典列表,充当 API 的临时数据存储。每个项目都有一个 id 和一个 name。

    • GET /api/items:当向/api/items发出GET请求时,服务器返回一个项目数据存储中所有项目的列表。这对于检索集合中的所有资源非常有用。

    • POST /api/items:对 /api/items 的 POST 请求允许客户端创建新项目。服务器期望在请求正文中包含一个包含新项目详细信息的 JSON 对象。创建项目后,服务器会使用新创建的项目和 201 Created 状态代码进行响应。

    • PUT /api/items/:对 /api/items/PUT 请求code> 用于更新具有指定 item_id 的现有项目。客户端在请求正文中发送更新的数据,服务器修改现有项目。如果未找到该项目,服务器将返回 404 Not Found 错误。

    • DELETE /api/items/:对 /api/items/DELETE 请求code> 从数据存储中删除具有指定 item_id 的项目。如果成功删除该项目,服务器会返回 204 No Content 状态代码,表示删除成功并且没有更多内容可返回。

    • 运行应用程序:if __name__ == "__main__": 块确保直接执行脚本时 Flask 应用程序运行。

    第 4 步 — 运行和测试您的 API

    使用以下命令启动 Flask 服务器:

    root@ubuntu:~# python3 app.py
    

    您应该注意到 Flask 服务器正在运行并显示以下输出:

    * Serving Flask app 'app'
     * Debug mode: on
    WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
     * Running on http://127.0.0.1:5000
    Press CTRL+C to quit
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 837-877-972
    

    从上面的输出中,您可以注意到服务器正在 http://127.0.0.1 上运行并侦听端口 5000。

    现在,您可以使用 curl、Postman 或其他 HTTP 客户端测试端点。在本教程中,您将使用 curl 测试端点并发送 HTTP 请求。

    打开另一个 Ubuntu 控制台并一一执行以下 curl 命令:

    • 获取:curl http://127.0.0.1:5000/api/items
    • POST: curl -X POST -H "Content-Type: application/json" -d '{"name": "This is item 3"}' http://127.0.0.1 :5000/api/项目
    • PUT: curl -X PUT -H "Content-Type: application/json" -d '{"name": "这是更新的项目 1"}' http://127.0.0. 0.1:5000/api/items/1
    • 删除:curl -X DELETE http://127.0.0.1:5000/api/items/1

    让我们看看每个命令的实际效果:

    root@ubuntu:~# curl http://127.0.0.1:5000/api/items
    
    [
      {
        "id": 1,
        "name": "This is item 1"
      },
      {
        "id": 2,
        "name": "This is item 2"
      }
    ]
    

    您会注意到服务器返回项目数据存储中所有项目的列表。

    使用 POST 方法,让我们向数据存储区添加一个新项目。

    root@ubuntu:~# curl -X POST -H "Content-Type: application/json" -d '{"name": "This is item 3"}' http://127.0.0.1:5000/api/items
    
    {
      "id": 3,
      "name": "This is item 3"
    }
    

    注意:在运行 Flask 服务器的其他控制台上,您会注意到所有正在执行的 HTTP 请求及其响应代码。

    * Running on http://127.0.0.1:5000
    Press CTRL+C to quit
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 837-877-972
    127.0.0.1 - - [23/Aug/2024 06:57:27] "GET /api/items HTTP/1.1" 200 -
    127.0.0.1 - - [23/Aug/2024 06:59:56] "POST /api/items HTTP/1.1" 201 -
    

    这是监视、调试和解决服务器问题的好方法。

    接下来,让我们执行一个 PUT 请求。对 /api/items/ 的 PUT 请求将使用指定的 item_id 更新现有项目。

    root@ubuntu:~# curl -X PUT -H "Content-Type: application/json" -d '{"name": "This is updated item 1"}' http://127.0.0.1:5000/api/items/1
    
    {
      "id": 1,
      "name": "This is updated item 1"
    }
    

    现在,让我们执行 GET 请求来查看更新的项目 1。

    root@ubuntu:~# curl http://127.0.0.1:5000/api/items/1
    
    {
      "id": 1,
      "name": "This is updated item 1"
    }
    

    最后,让我们执行一个 DELETE 请求以从数据存储中删除一个项目。

    root@ubuntu:~# curl -X DELETE http://127.0.0.1:5000/api/items/1
    

    这将从数据存储中删除项目 1。

    为了验证这一点,让我们执行一个 GET 请求。

    root@ubuntu:~# curl http://127.0.0.1:5000/api/items
    
    [
      {
        "id": 2,
        "name": "This is item 2"
      },
      {
        "id": 3,
        "name": "This is item 3"
      }
    ]
    

    您会注意到项目 1 不再存在并被永久删除。

    结论

    在本教程中,您使用 Flask 构建了一个基本的 REST API 应用程序。您现在可以使用其他路由扩展此 API、与数据库集成或将其部署到 DigitalOcean 等云平台。 Flask 是一个强大的工具,可以快速高效地构建 API,有了这些基础知识,您就可以开始构建更复杂的应用程序了。

    ©2015-2025 Norria support@norria.com