# 牛只数据管理 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: 并发数 ``` --- 祝测试顺利!如有问题,请查看服务器日志或联系技术支持。