使用Flask-RESTful构建API,并使用PyCharm HTTP工具...

作者:API传播员 · 2026-01-14 · 阅读时间:5分钟
本文详细介绍了如何使用Flask-RESTful构建REST API应用程序,结合PyCharm HTTP工具进行调试和测试,涵盖开发环境配置、数据库迁移和API路由实现,特别针对团队协作点餐场景,提供用户管理、餐馆管理和订单管理功能的长尾关键词指导。

使用 Flask-RESTful 构建 API,并使用 PyCharm HTTP 工具

在本篇文章中,我们将介绍如何使用 Flask-RESTful 构建一个简单的 REST API 应用程序,同时结合 API 路由以及使用 HTTP 客户端进行交互。


背景介绍

在现代办公环境中,团队协作点餐是一个常见的场景。许多餐馆要求最低订单量,而团队成员共同点餐不仅可以满足这一要求,还能减少配送成本。然而,手动协调点餐可能会耗费大量时间。为了解决这个问题,我们将开发一个应用程序,通过 REST API 实现点餐管理功能。


应用程序功能概述

我们的目标是开发一个支持以下功能的 REST API:

  • 用户管理
    • /users:注册新用户。
    • /users/login:用户登录并获取令牌。
  • 餐馆管理
    • /餐馆:记录可供点餐的餐馆信息。
    • /餐馆/<id>/菜单:获取指定餐馆的菜单。
  • 订单管理
    • /订单:创建和管理订单。

通过这些接口,用户可以创建订单、添加菜单项,并与团队成员共享点餐信息。


数据库配置与迁移

数据库选择

我们选择使用 PostgreSQL 作为数据库,并通过 psycopg2 库与其交互。为了简化开发,我们暂时不使用 ORM,而是直接编写 SQL 脚本进行数据库操作。如果对 SQLAlchemy 感兴趣,可以在未来的文章中探索其使用方法。

数据库迁移工具

为了管理数据库版本,我们使用一个支持 SQL 脚本的迁移工具。以下是迁移的基本步骤:

  1. 创建运行配置:

    • 在 PyCharm 中选择“模块名称”,输入 pgmigrate

    • 参数示例:

      migrate --target latest --conn postgresql://grouporder:hunter2@localhost/grouporder
    • 设置工作目录为 migrations 文件夹。

  2. 运行迁移:

    • 执行迁移配置后,确保输出显示“进程已完成,退出代码为 0”。
  3. 验证迁移:

    • 在 PyCharm 的数据库工具窗口中添加 PostgreSQL 数据源。
    • 使用端口 5678 连接到数据库,并验证表结构是否正确。

配置开发环境

使用 Vagrant 和 Ansible

我们通过 Vagrant 和 Ansible 自动化配置开发环境:

  1. Vagrant 下载 Ubuntu 基础镜像。
  2. 使用 Ansible 执行 setup.yml 脚本,安装必要的依赖。

配置 PyCharm 项目解释器

  1. 在 PyCharm 中选择“添加远程”解释器。
  2. 设置解释器路径为 /home/stradingt/venv/bin/python

标记源码目录

右键点击项目中的 grouporder 文件夹,选择“将目录标记为源根目录”,以便 PyCharm 正确解析代码。


启动 Flask 应用程序

创建运行配置

  1. 添加新的 Python 运行配置。

  2. 设置“模块名称”为 flask,参数为:

    run --host=0.0.0.0
  3. 配置环境变量,例如:

    DATABASE_URL=postgres://grouporder:hunter2@localhost/grouporder
  4. 勾选“仅限单个实例”选项,防止端口冲突。


使用 PyCharm HTTP 客户端测试 API

PyCharm 提供了内置的 HTTP 客户端,方便我们直接在编辑器中编写和运行 HTTP 请求。

示例:创建用户账户

  1. 创建一个临时 HTTP 请求文件:

    • 按下 Ctrl+Alt+Shift+Insert(macOS 为 Ctrl+N)。
    • 选择文件类型为“HTTP 请求”。
  2. 编写请求:

    POST http://localhost:5000/users
    Content-Type: application/json
    
    {
       "username": "test_user",
       "password": "secure_password"
    }
  3. 运行请求并查看响应。

示例:用户登录

  1. 在同一文件中添加登录请求:

    POST http://localhost:5000/users/login
    Content-Type: application/json
    
    {
       "username": "test_user",
       "password": "secure_password"
    }
  2. 运行请求后,获取令牌以进行后续操作。


手动修改权限

在测试过程中,我们可能需要手动修改数据库中的用户权限。例如,为用户赋予 can_manage_restaurants 权限:

  1. 打开 PyCharm 的数据库工具窗口。
  2. 找到用户表,双击 can_manage_restaurants 字段,勾选复选框。
  3. 提交更改。

完成后,重新运行相关 HTTP 请求,验证权限是否生效。


总结

通过本篇文章,我们学习了如何使用 Flask-RESTful 构建一个简单的 REST API 应用程序,并结合 PyCharm 的 HTTP 客户端进行测试。我们还介绍了如何配置开发环境、管理数据库迁移以及调试 API。如果你有任何改进建议或想法,欢迎在评论中分享!

在下一篇文章中,我们将探讨如何在 AWS 上部署该应用程序,敬请期待。

原文链接: https://blog.jetbrains.com/pycharm/2017/12/building-an-api-using-flask-restful-and-using-the-pycharm-http-client/