Files
cattleData/backend/API_TEST.md

484 lines
10 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 测试文档
## 服务器信息
- **服务器地址**: 119.45.30.82
- **端口**: 12240
- **基础URL**: `http://119.45.30.82:12240`
- **API基础路径**: `/api/cattle-data`
---
## 1. 检查服务是否正常运行
### 方法1: 浏览器访问
```
http://119.45.30.82:12240/swagger-ui.html
```
如果能看到 Swagger UI 界面,说明服务正常运行。
### 方法2: 使用 curl 命令
```bash
curl http://119.45.30.82:12240/api/cattle-data
```
### 方法3: 检查服务状态(在服务器上)
```bash
# 检查端口是否监听
netstat -tlnp | grep 8080
# 或使用 ss 命令
ss -tlnp | grep 8080
# 检查进程
ps aux | grep cattletends
```
---
## 2. API 接口测试
### 2.1 获取所有牛只数据
**接口**: `GET /api/cattle-data`
**测试方法1: 浏览器直接访问**
```
http://119.45.30.82:12240/api/cattle-data
```
**测试方法2: 使用 curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data"
```
**测试方法3: 使用 Postman**
- Method: GET
- URL: `http://119.45.30.82:12240/api/cattle-data`
---
### 2.2 按省份筛选数据
**接口**: `GET /api/cattle-data?province=安徽省`
**测试方法1: 浏览器**
```
http://119.45.30.82:12240/api/cattle-data?province=安徽省
```
**测试方法2: curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data?province=安徽省"
```
---
### 2.3 按品种筛选数据
**接口**: `GET /api/cattle-data?type=鲁西牛`
**测试方法1: 浏览器**
```
http://119.45.30.82:12240/api/cattle-data?type=鲁西牛
```
**测试方法2: curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data?type=鲁西牛"
```
---
### 2.4 根据ID获取单条数据
**接口**: `GET /api/cattle-data/{id}`
**示例**: 获取ID为1的数据
**测试方法1: 浏览器**
```
http://119.45.30.82:12240/api/cattle-data/1
```
**测试方法2: curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data/1"
```
---
### 2.5 创建牛只数据
**接口**: `POST /api/cattle-data`
**请求头**:
```
Content-Type: application/json
```
**请求体示例**:
```json
{
"type": "鲁西牛",
"province": "安徽省",
"location": "安徽淮南市",
"price": 25.50,
"provincePrice": 24.80,
"inventory23th": 1000,
"slaughter23th": 500,
"inventory24th": 1200,
"slaughter24th": 600,
"inventory25th": 1300,
"slaughter25th": 650
}
```
**测试方法1: curl**
```bash
curl -X POST "http://119.45.30.82:12240/api/cattle-data" \
-H "Content-Type: application/json" \
-d '{
"type": "鲁西牛",
"province": "安徽省",
"location": "安徽淮南市",
"price": 25.50
}'
```
**测试方法2: Postman**
- Method: POST
- URL: `http://119.45.30.82:12240/api/cattle-data`
- Headers: `Content-Type: application/json`
- Body (raw JSON): 使用上面的 JSON 示例
---
### 2.6 更新牛只数据
**接口**: `PUT /api/cattle-data/{id}`
**示例**: 更新ID为1的数据
**测试方法: curl**
```bash
curl -X PUT "http://119.45.30.82:12240/api/cattle-data/1" \
-H "Content-Type: application/json" \
-d '{
"type": "鲁西牛",
"province": "安徽省",
"location": "安徽淮南市",
"price": 26.00
}'
```
---
### 2.7 删除牛只数据
**接口**: `DELETE /api/cattle-data/{id}`
**示例**: 删除ID为1的数据
**测试方法: curl**
```bash
curl -X DELETE "http://119.45.30.82:12240/api/cattle-data/1"
```
---
### 2.8 批量导入数据Excel文件
**接口**: `POST /api/cattle-data/import`
**测试方法1: curl**
```bash
curl -X POST "http://119.45.30.82:12240/api/cattle-data/import" \
-F "file=@/path/to/your/file.xlsx"
```
**测试方法2: Postman**
- Method: POST
- URL: `http://119.45.30.82:12240/api/cattle-data/import`
- Body: form-data
- Key: `file` (类型选择 File)
- Value: 选择你的 Excel 文件
**注意**: Excel 文件格式要求:
- 第一行:表头(时间、产品/品种、所在产地、活牛价格(元/斤)
- 从第二行开始:数据行
---
### 2.9 获取所有省份数据15个省份
**接口**: `GET /api/cattle-data/provinces`
**说明**: 返回所有省份的存栏出栏数据和省份均价
**测试方法1: 浏览器**
```
http://119.45.30.82:12240/api/cattle-data/provinces
```
**测试方法2: curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data/provinces"
```
**响应示例**:
```json
{
"code": 200,
"message": "success",
"data": [
{
"id": 1,
"province": "内蒙古",
"provincePrice": 14.01,
"inventory23th": 948,
"slaughter23th": 464,
"inventory24th": 938,
"slaughter24th": 470,
"inventory25th": 1032,
"slaughter25th": 520,
"createTime": "2025-11-27T10:00:00",
"upTime": "2025-11-27T10:00:00"
}
]
}
```
---
### 2.10 根据省份名称获取省份数据
**接口**: `GET /api/cattle-data/provinces/{province}`
**说明**: 根据省份名称查询单个省份的存栏出栏数据
**测试方法1: 浏览器**
```
http://119.45.30.82:12240/api/cattle-data/provinces/内蒙古
```
**测试方法2: curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data/provinces/内蒙古"
```
---
### 2.11 获取全国总量数据(全国存出栏)
**接口**: `GET /api/cattle-data/national`
**说明**: 自动从省份数据表计算并返回全国年份存栏和出栏总量数据
**测试方法1: 浏览器**
```
http://119.45.30.82:12240/api/cattle-data/national
```
**测试方法2: curl**
```bash
curl -X GET "http://119.45.30.82:12240/api/cattle-data/national"
```
**响应示例**:
```json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"nationalInventory23th": 3042,
"nationalSlaughter23th": 7251,
"nationalInventory24th": 2802,
"nationalSlaughter24th": 7304,
"nationalInventory25th": 2587,
"nationalSlaughter25th": 0,
"createTime": "2025-11-27T10:00:00",
"upTime": "2025-11-27T10:00:00"
}
}
```
**说明**:
- 如果数据不存在,会自动从 `cattleprovince` 表计算并创建
- 全国总量 = 15个省份对应字段的总和
---
### 2.12 重新计算全国总量数据
**接口**: `POST /api/cattle-data/national/recalculate`
**说明**: 根据 `cattleprovince` 表中的所有省份数据重新计算全国总量
**测试方法: curl**
```bash
curl -X POST "http://119.45.30.82:12240/api/cattle-data/national/recalculate"
```
**使用场景**:
- 直接修改了数据库中的省份数据后,需要重新计算全国总量
- 确保全国总量数据与省份数据保持一致
---
## 3. 使用 Swagger UI 测试(推荐)
### 访问 Swagger UI
```
http://119.45.30.82:12240/swagger-ui.html
```
在 Swagger UI 中:
1. 可以看到所有接口的详细文档
2. 可以直接在页面上测试接口
3. 可以查看请求和响应示例
4. 支持在线测试所有接口
---
## 4. 响应格式说明
所有接口返回统一的响应格式:
**成功响应**:
```json
{
"code": 200,
"message": "操作成功",
"data": {
// 具体数据
}
}
```
**错误响应**:
```json
{
"code": 400,
"message": "错误信息",
"data": null
}
```
---
## 5. 快速测试脚本
### 测试脚本 (test_api.sh)
```bash
#!/bin/bash
BASE_URL="http://119.45.30.82:12240/api/cattle-data"
echo "=== 测试1: 获取所有数据 ==="
curl -X GET "${BASE_URL}"
echo -e "\n\n=== 测试2: 按省份筛选 ==="
curl -X GET "${BASE_URL}?province=安徽省"
echo -e "\n\n=== 测试3: 按品种筛选 ==="
curl -X GET "${BASE_URL}?type=鲁西牛"
echo -e "\n\n=== 测试4: 创建数据 ==="
curl -X POST "${BASE_URL}" \
-H "Content-Type: application/json" \
-d '{
"type": "测试品种",
"province": "测试省",
"location": "测试市",
"price": 20.00
}'
echo -e "\n\n=== 测试完成 ==="
```
**使用方法**:
```bash
chmod +x test_api.sh
./test_api.sh
```
---
## 6. 常见问题排查
### 6.1 连接超时
- 检查服务器防火墙是否开放 8080 端口
- 检查服务器是否正常运行
- 检查网络连接
### 6.2 404 错误
- 确认 URL 路径正确
- 确认服务已启动
- 检查 context-path 配置
### 6.3 500 错误
- 查看服务器日志
- 检查数据库连接
- 检查请求参数格式
### 6.4 查看服务日志
```bash
# 如果使用启动脚本
tail -f log.out
# 或查看 Spring Boot 日志
tail -f logs/spring.log
```
---
## 7. 接口列表汇总
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/cattle-data` | 获取所有数据(支持 province、type 参数筛选) |
| GET | `/api/cattle-data/{id}` | 根据ID获取单条数据 |
| POST | `/api/cattle-data` | 创建新数据 |
| PUT | `/api/cattle-data/{id}` | 更新数据 |
| DELETE | `/api/cattle-data/{id}` | 删除数据 |
| POST | `/api/cattle-data/import` | 批量导入Excel文件 |
| POST | `/api/cattle-data/import-province` | 批量导入省份存栏出栏及均价Excel |
| GET | `/api/cattle-data/provinces` | 获取所有15个省份的存栏出栏数据和省份均价 |
| GET | `/api/cattle-data/provinces/{province}` | 根据省份名称查询单个省份的存栏出栏数据 |
| GET | `/api/cattle-data/national` | 获取全国总量数据(自动从省份数据表计算) |
| POST | `/api/cattle-data/national/recalculate` | 重新计算全国总量数据 |
---
## 8. 测试建议
1. **先测试 GET 接口**:确认服务正常运行
2. **测试 POST 创建**:添加测试数据
3. **测试 PUT 更新**:修改刚创建的数据
4. **测试 DELETE 删除**:清理测试数据
5. **测试导入功能**:使用真实的 Excel 文件
---
## 9. 性能测试
### 使用 Apache Bench (ab) 进行压力测试
```bash
# 安装 ab
yum install httpd-tools -y # CentOS
apt-get install apache2-utils -y # Ubuntu
# 测试 GET 接口
ab -n 1000 -c 10 http://119.45.30.82:12240/api/cattle-data
# 参数说明:
# -n: 总请求数
# -c: 并发数
```
---
祝测试顺利!如有问题,请查看服务器日志或联系技术支持。