首页 > 系统相关 >如何在 Ubuntu 22.04 上使用 Flask 创建 REST API 教程

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

时间:2025-01-02 09:00:51浏览次数:7  
标签:users Flask app API user Ubuntu id

简介

在本教程中,我们将解释如何使用 Flask 在 Ubuntu 服务器上创建你的第一个 REST API。

REST API(Representational State Transfer Application Programming Interfaces)对于构建可扩展的 Web 应用程序至关重要。Flask 是一个用于 Python 的微型 Web 框架,由于其简单性和灵活性,是创建 REST API 的绝佳选择。在本教程中,我们将逐步介绍在 Ubuntu 上使用 Flask 设置基本 REST API 的步骤。

本教程的目标是手把手教你如何在 Ubuntu 服务器上安装并配置 Flask,以创建你的第一个 REST API。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

第一步:安装 Python 和 Pip

首先,更新你的系统软件包列表,并安装 Python 和 pip,Python 的包管理器。

sudo apt update
sudo apt install python3 python3-pip -y

通过检查 Python 和 pip 版本来验证安装:

python3 --version
pip3 --version

第二步:设置虚拟环境

为你的 Flask 项目使用虚拟环境是最佳实践,以便单独管理依赖项。创建并激活虚拟环境,如下所示:

sudo apt install python3-venv -y
python3 -m venv flask-api
source flask-api/bin/activate

你的终端提示符将更改,表明虚拟环境已激活。

第三步:安装 Flask

激活虚拟环境后,使用 pip 安装 Flask:

pip install Flask

第四步:创建一个基本的 Flask 应用程序

让我们从创建一个基本的 Flask 应用程序开始。在你的项目目录中,创建一个名为 app.py 的文件:

nano app.py

添加以下代码:

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/')
def home():
    return "Welcome to the Flask REST API!"

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

这个简单的应用程序有一个路由(/),它返回欢迎消息。

第五步:创建一个 REST API 端点

让我们通过添加 REST API 端点来扩展应用程序。我们将创建一个简单的 API 来管理用户列表。

替换 app.py 的内容,使用以下代码:

from flask import Flask, jsonify, request

app = Flask(__name__)

# In-memory database (a list of users)
users = [
    {"id": 1, "name": "Alice"},
    {"id": 2, "name": "Bob"},
    {"id": 3, "name": "Charlie"}
]

# Get all users
@app.route('/users', methods=['GET'])
def get_users():
    return jsonify(users)

# Get a single user by ID
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        return jsonify(user)
    return jsonify({"error": "User not found"}), 404

# Create a new user
@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.get_json()
    new_user['id'] = len(users) + 1
    users.append(new_user)
    return jsonify(new_user), 201

# Update an existing user
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        data = request.get_json()
        user.update(data)
        return jsonify(user)
    return jsonify({"error": "User not found"}), 404

# Delete a user
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    global users
    users = [u for u in users if u['id'] != user_id]
    return '', 204

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

第六步:测试 REST API

要测试 API,请运行 Flask 应用程序:

python app.py

Flask 将启动开发服务器,你可以使用 curl 或 Postman 等工具访问 API 端点。

输出:

 * 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: 117-628-815

API 请求示例:

获取所有用户:

curl http://127.0.0.1:5000/users

输出:

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  },
  {
    "id": 3,
    "name": "Charlie"
  }
]

按 ID 获取用户:

curl http://127.0.0.1:5000/users/1

输出:

{
  "id": 1,
  "name": "Alice"
}

创建新用户:

curl -X POST -H "Content-Type: application/json" -d '{"name": "Dave"}' http://127.0.0.1:5000/users

输出:

{
  "id": 4,
  "name": "Dave"
}

更新现有用户:

curl -X PUT -H "Content-Type: application/json" -d '{"name": "David"}' http://127.0.0.1:5000/users/4

输出:

{
  "id": 4,
  "name": "David"
}

删除用户:

curl -X DELETE http://127.0.0.1:5000/users/4

第七步:部署 Flask 应用程序

对于生产环境部署,你不应该使用 Flask 的内置服务器。相反,使用像 Gunicorn 这样的 WSGI 服务器。安装 Gunicorn:

pip install gunicorn

然后,使用 Gunicorn 运行你的 Flask 应用程序:

gunicorn --bind 0.0.0.0:8000 app:app

你现在可以远程访问 Flask API。在防火墙中添加 8000 端口并访问 API 端点。你还可以设置 Nginx 作为反向代理来处理客户端请求并将它们转发到 Gunicorn。

结尾

你已经在 Ubuntu 服务器上使用 Flask 创建了你的第一个 REST API。本教程介绍了设置 Python 虚拟环境、安装 Flask、创建 RESTful 端点以及测试 API 的过程。凭借 Flask 的灵活性,你可以轻松扩展此应用程序以包含更复杂的功能,并将其部署到生产环境中。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

标签:users,Flask,app,API,user,Ubuntu,id
From: https://blog.csdn.net/weixin_53510183/article/details/144850270

相关文章

  • ubuntu查看当前哪些进程在使用网络流量(好用的方法)
    一、ubuntu要查看当前哪些进程在使用网络流量使用nethogs工具:nethogs是一个用于显示各个进程使用的网络带宽的命令行工具。你可以通过以下命令安装并运行nethogs:sudoapt-getinstallnethogs#安装nethogs(对于基于Debian的系统)sudonethogs运行结果如下:会列出......
  • Ubuntu下FFmpeg的安装方式
    在Ubuntu系统下安装FFmpeg有多种方式,其中最常用的是通过apt-get命令和源码编译安装。本文将分别介绍这两种方式,并提供安装过程中的注意事项和常见问题解决方法。一、使用apt-get命令安装使用apt-get命令安装FFmpeg是最简单快捷的方式,只需要在终端中输入以下命令即可:sudoapt-g......
  • ubuntu 下安装ffmpeg
    先创建三个文件夹:ffmpeg_sourcesffmpeg_buildbin1.首先安装依赖包sudoapt-getupdate-qq&&sudoapt-get-yinstall\autoconf\automake\build-essential\cmake\git-core\libass-dev\libfreetype6-dev\libsdl2-dev\libtool\......
  • docker 部署项目 Linux 可以ping通域名,但是服务无法访问域名 UnknownHostException: a
    问题描述:这个问题发生在服务器加装安全组件后,一顿网络操作(如重启网卡、重启网络)之后就发生linux无法ping通域名,但是ping通外网ip是没问题的。这个问题他们安全组件的会解决。我这里就不做重点讲解。后来安全组件那边弄通ping域名也没问题后,项目依旧无法访问域名。具体报错......
  • API网关的五大应用场景
    ......
  • 共享ubuntu系统宿主机的部分文件到win虚拟机--通过ISO文件挂载
    安装genisoimagesudoapt-getupdatesudoapt-getinstallgenisoimage将需要共享的文件放入指定文件夹cp/path/to/your/file~/iso_work/使用genisoimage生成新镜像genisoimage-o/path/to/new.iso-J-R-V"NEW_ISO_LABEL"~/iso_work/其中new.iso就是新镜像的名称......
  • 【Java教程】Day11-07 时间与日期:日期与时间API的转换与数据库存储
    Java提供了两个日期与时间处理API:旧的 java.util.Date 和 java.util.Calendar,以及新的 java.time 包。新的API以 Instant、LocalDateTime 等为核心,具有更清晰的设计和更强大的功能。除非你需要与遗留代码进行交互,否则建议使用新的API。在需要将新旧API进行转换时,......
  • 基于高德地图API在Python中实现地图功能的方法
      本文介绍在高德开放平台中,申请、获取地图API的Key的方法;同时通过简单的Python代码,调取API信息,对所得Key的可用性加以验证。  首先,我们进入高德开放平台的官方网站。如果大家是第一次使用高德地图开放平台,那么需要点击右上角注册一个开发者账号。  注册完毕后,登录这一账......
  • 如何在 Ubuntu 20.04 上部署 Graylog 日志管理平台教程
    如何在Ubuntu20.04上部署Graylog日志管理平台教程简介Graylog是一个开源的、基于Web的日志管理和聚合系统,它可以帮助你高效地管理和分析大量日志数据。通过收集服务器日志,并使用Elasticsearch进行索引,以及MongoDB保存元数据,Graylog使得详细的日志分析成为可......
  • nftables 在 Ubuntu 22.04 上的安装与配置教程
    nftables在Ubuntu22.04上的安装与配置教程简介:nftables是Linux内核中的一个现代防火墙框架,旨在取代传统的iptables。它提供了更高效的规则处理和更简洁的语法。本教程将手把手教你如何在Ubuntu22.04服务器上安装和配置nftables,以提升你的网络安全性。准备工......