产品目录API

一个基于FastAPI和SQLAlchemy的RESTful API,用于管理产品目录,支持MySQL数据库集成和AI助手交互。

  • by KhaledEssghaier
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KhaledEssghaier/Product-Catalog-with-FastAPI-and-MCP

使用说明

产品目录API

一个用于管理产品目录的RESTful API,集成了MySQL数据库,使用FastAPI和SQLAlchemy构建。该应用程序包括一个REST API服务器和一个用于AI代理集成的MCP(模型上下文协议)服务器。

特点/特性

  • ✅ 产品完整的增删改查(CRUD)操作
  • ✅ 通过XAMPP集成MySQL数据库
  • ✅ 基于类别的过滤
  • ✅ 库存可用性追踪
  • ✅ 支持分页
  • ✅ 使用 Pydantic 进行数据验证
  • ✅ 用于AI助手集成的MCP服务器
  • 交互式API文档(Swagger UI)

技术栈

  • 框架FastAPI 0.104.1
  • 数据库MySQL(通过XAMPP)
  • **ORM(对象关系映射)**SQLAlchemy 2.0.23
  • 服务器Uvicorn 0.24.0
  • 验证Pydantic 2.5.0
  • MCP 集成FastMCP 0.2.0

先决条件

  • Python 3.8或更高版本
  • 带有运行中的MySQL的XAMPP
  • 名为(某名称)的MySQL数据库 product_catalog

安装

  1. 克隆项目或导航到项目目录

  2. 安装依赖项

    pip install -r requirements.txt
    
  3. 设置MySQL数据库

    • 启动XAMPP并确保MySQL正在运行
    • 创建一个名为(数据库名)的数据库 product_catalog
    • 该应用程序将自动创建所需的表格

数据库配置

该应用程序使用以下默认设置连接到 MySQL:

  • 主持人localhost(本地主机)
  • 港口3306
  • 用户根用户(或超级用户)
  • 密码(空)
  • 数据库产品目录

要修改连接,请更新 DATABASE_URL 在里面 main.py.

运行应用程序

启动FastAPI服务器:

uvicorn main:app --host 127.0.0.1 --port 8000 --reload

API将提供在: http://127.0.0.1:8000

访问交互式文档:

  • Swagger UIhttp://127.0.0.1:8000/docs 翻译为中文是:“http://127.0.0.1:8000/文档(或:说明文档)”。不过,通常我们会根据上下文或网站的具体内容来更准确地翻译“docs”部分,比如可能是“API文档”、“用户手册”等。但在这里,为了保持通用性,翻译为“文档”是合适的
  • **ReDoc(可译为“重构文档”或根据具体语境灵活翻译,此处直译为“重构记录”或“重新记录”可能不够贴切,因此采用更通用的“重构文档”作为译文)**http://127.0.0.1:8000/redoc(该网址指向本地服务器的Redoc文档界面,通常用于查看API文档)

API终端点

产品

方法 结束点 描述
GET /products 列出所有产品(带过滤器)
GET (译为中文) 获取
帖子 /products 创建一个新产品
PUT (在中文语境中,这通常直接翻译为“PUT”方法,因为它是HTTP协议中的一个动词,表示更新或替换资源,没有直接的中文对应词,所以一般保留原英文) /products/{id} 更新产品
删除 /products/{id} 删除产品

类别

方法 结束点 描述
GET (GET请求) /categories 获取所有唯一类别

健康与信息

方法 终点 描述
GET (在中文中,这通常直接翻译为“获取”,但在此上下文中,由于“GET”是HTTP方法,通常不直接翻译,而是保留原样以表示其技术含义。) / API信息
GET /health 健康检查(API + 数据库)

使用示例

创建一个产品

curl -X POST "http://127.0.0.1:8000/products" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Laptop",
    "price": 999.99,
    "description": "High-performance laptop",
    "category": "Electronics",
    "in_stock": true
  }'

带过滤器的产品列表

# Get all electronics
curl "http://127.0.0.1:8000/products?category=Electronics"

# Get products in stock
curl "http://127.0.0.1:8000/products?in_stock=true"

# With pagination
curl "http://127.0.0.1:8000/products?skip=0&limit=10"

按ID获取产品

curl "http://127.0.0.1:8000/products/1"

更新产品

curl -X PUT "http://127.0.0.1:8000/products/1" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 899.99,
    "in_stock": true
  }'

删除产品

curl -X DELETE "http://127.0.0.1:8000/products/1"

获取所有类别

curl "http://127.0.0.1:8000/categories"

产品模式(或产品架构)

{
  "id": 1,
  "name": "Product Name",
  "price": 99.99,
  "description": "Product description",
  "category": "General",
  "in_stock": true
}

MCP 服务器

该项目包括一个MCP服务器(mcp_server.py) 允许人工智能助手与产品目录进行交互。它提供了以下工具:

  • 列出带过滤器的产品
  • 获取产品详情
  • 开发新产品
  • 更新现有产品
  • 删除产品
  • 按类别搜索产品

发展

项目结构

.
├── main.py              # FastAPI application
├── mcp_server.py        # MCP server for AI integration
├── requirements.txt     # Python dependencies
└── README.md           # This file

在开发模式下运行

这个(或“该”) --reload 标志启用代码更改时的自动重新加载:

uvicorn main:app --host 127.0.0.1 --port 8000 --reload

错误处理

API返回相应的HTTP状态码:

  • 200成功的GET/PUT请求
  • 201成功的POST请求(创建)
  • 204成功删除
  • 404资源未找到
  • 422验证错误
  • 503数据库不可用

许可证

这个项目是出于教育目的(Lab 2 作业)。


最后更新时间2025年10月15日