产品目录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
安装
- 克隆项目或导航到项目目录
- 安装依赖项
pip install -r requirements.txt- 设置MySQL数据库
- 启动XAMPP并确保MySQL正在运行 - 创建一个名为(数据库名)的数据库 product_catalog - 该应用程序将自动创建所需的表格
数据库配置
该应用程序使用以下默认设置连接到 MySQL:
- 主持人localhost(本地主机)
- 港口3306
- 用户根用户(或超级用户)
- 密码(空)
- 数据库产品目录
要修改连接,请更新 DATABASE_URL 在里面 main.py.
运行应用程序
启动FastAPI服务器:
uvicorn main:app --host 127.0.0.1 --port 8000 --reloadAPI将提供在: 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/{id} | 获取特定产品 |
| 帖子 | /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日
