Files
steel_prices_service/docs/API_DOCUMENTATION.md
2026-01-06 09:19:12 +08:00

229 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API 文档说明
## 📚 Swagger 文档已集成
Steel Prices Service 现已集成完整的 Swagger API 文档系统!
### 访问方式
启动服务后,可以通过以下方式访问 API 文档:
#### 1. Swagger UI 界面(推荐)
```
http://localhost:3000/api-docs
```
**特点:**
- 📖 交互式 API 文档
- 🧪 可直接在浏览器中测试 API
- 📝 完整的请求/响应示例
- 🔍 参数说明和验证规则
- 🎨 美观的用户界面
#### 2. JSON 格式的 OpenAPI 规范
```
http://localhost:3000/api-docs.json
```
用于:
- 导入到其他 API 工具Postman、Insomnia
- 自动生成客户端 SDK
- API 版本管理
#### 3. API 信息接口
```
http://localhost:3000/
```
返回所有可用的 API 端点和文档链接。
---
## 📖 文档内容
### API 端点分类
#### Health健康检查
- `GET /api/health` - 检查服务状态
#### Prices价格查询
- `GET /api/prices/region` - 按地区查询价格
- `GET /api/prices/search` - 多条件搜索价格
- `GET /api/prices/stats` - 价格统计分析
- `GET /api/prices/trend` - 价格趋势分析
#### Data数据管理
- `POST /api/prices/import` - 批量导入价格数据
### 数据模型
#### Price价格数据
- region - 地区(必填)
- city - 城市
- material - 材质(必填)
- specification - 规格型号
- price - 价格(必填)
- unit - 单位
- date - 日期(必填)
- source - 数据来源
- warehouse - 仓库/厂家
#### PriceStats价格统计
- count - 记录数量
- avgPrice - 平均价格
- minPrice - 最低价格
- maxPrice - 最高价格
- stdDev - 标准差
- trend - 价格趋势
- changeRate - 变化率
---
## 🧪 如何使用 Swagger UI
### 1. 浏览 API
1. 打开 `http://localhost:3000/api-docs`
2. 展开左侧的 API 分类标签
3. 点击感兴趣的 API 端点
### 2. 测试 API
1. 在 API 详情页点击 "Try it out" 按钮
2. 填写必填参数(标红的字段)
3. 点击 "Execute" 执行请求
4. 查看响应结果
### 3. 查看数据模型
1. 滚动到页面底部的 "Schemas" 部分
2. 点击模型名称查看详细字段说明
3. 查看示例数据格式
---
## 📝 示例:测试 API
### 示例 1按地区查询价格
**请求:**
```
GET /api/prices/region?region=昆明&date=2026-01-05
```
**在 Swagger UI 中的步骤:**
1. 展开 `GET /api/prices/region`
2. 点击 "Try it out"
3. 在 region 字段输入:`昆明`
4. 在 date 字段输入:`2026-01-05`(可选)
5. 点击 "Execute"
6. 查看响应结果
### 示例 2搜索价格数据
**请求:**
```
GET /api/prices/search?material=HPB300&page=1&pageSize=20
```
**在 Swagger UI 中的步骤:**
1. 展开 `GET /api/prices/search`
2. 点击 "Try it out"
3. 在 material 字段输入:`HPB300`
4. 在 page 字段输入:`1`
5. 在 pageSize 字段输入:`20`
6. 点击 "Execute"
7. 查看响应结果和分页信息
### 示例 3获取价格统计
**请求:**
```
GET /api/prices/stats?region=昆明&material=HPB300&days=30
```
**在 Swagger UI 中的步骤:**
1. 展开 `GET /api/prices/stats`
2. 点击 "Try it out"
3. 在 region 字段输入:`昆明`
4. 在 material 字段输入:`HPB300`
5. 在 days 字段输入:`30`
6. 点击 "Execute"
7. 查看统计数据
---
## 🔧 Swagger UI 配置
### 启用的功能
-**Explorer** - API 列表导航
-**Try It Out** - 直接测试 API
-**Request Duration** - 显示请求耗时
-**Filter** - 搜索和过滤 API
-**Request Headers** - 显示请求头
-**Doc Expansion** - 列表展开方式
### 自定义配置
位置:[src/app.js](../src/app.js)
```javascript
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec, {
explorer: true, // 启用 API 导航
customCss: '.swagger-ui .topbar { display: none }', // 自定义 CSS
customSiteTitle: 'Steel Prices Service API Documentation', // 页面标题
swaggerOptions: {
persistAuthorization: true, // 持久化认证
displayRequestDuration: true, // 显示请求耗时
docExpansion: 'list', // 列表展开模式
filter: true, // 启用过滤
showRequestHeaders: true, // 显示请求头
tryItOutEnabled: true // 启用测试功能
}
}));
```
---
## 📚 相关文档
- [src/config/swagger.js](../src/config/swagger.js) - Swagger 配置文件
- [src/routes/api.js](../src/routes/api.js) - API 路由和注解
- [OpenAPI 3.0 规范](https://swagger.io/specification/) - 官方规范
---
## 🎯 快速开始
1. **启动服务**
```bash
npm start
```
2. **打开浏览器**
```
http://localhost:3000/api-docs
```
3. **开始测试 API**
- 选择一个 API 端点
- 点击 "Try it out"
- 填写参数并执行
---
## 💡 提示
- 所有参数都有详细的说明和示例
- 必填参数会用红色标记
- 响应数据包含完整的 JSON Schema
- 可以直接复制示例代码使用
---
**有问题?** 查看 [README.md](../README.md) 或 [快速开始指南](QUICK_START.md)