Files
cattleData/backend/API_TEST.md

10 KiB
Raw Permalink Blame History

牛只数据管理 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 命令

curl http://119.45.30.82:12240/api/cattle-data

方法3: 检查服务状态(在服务器上)

# 检查端口是否监听
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

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

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

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

curl -X GET "http://119.45.30.82:12240/api/cattle-data/1"

2.5 创建牛只数据

接口: POST /api/cattle-data

请求头:

Content-Type: application/json

请求体示例:

{
  "type": "鲁西牛",
  "province": "安徽省",
  "location": "安徽淮南市",
  "price": 25.50,
  "provincePrice": 24.80,
  "inventory23th": 1000,
  "slaughter23th": 500,
  "inventory24th": 1200,
  "slaughter24th": 600,
  "inventory25th": 1300,
  "slaughter25th": 650
}

测试方法1: curl

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

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

curl -X DELETE "http://119.45.30.82:12240/api/cattle-data/1"

2.8 批量导入数据Excel文件

接口: POST /api/cattle-data/import

测试方法1: curl

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

curl -X GET "http://119.45.30.82:12240/api/cattle-data/provinces"

响应示例:

{
  "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

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

curl -X GET "http://119.45.30.82:12240/api/cattle-data/national"

响应示例:

{
  "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

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. 响应格式说明

所有接口返回统一的响应格式:

成功响应:

{
  "code": 200,
  "message": "操作成功",
  "data": {
    // 具体数据
  }
}

错误响应:

{
  "code": 400,
  "message": "错误信息",
  "data": null
}

5. 快速测试脚本

测试脚本 (test_api.sh)

#!/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=== 测试完成 ==="

使用方法:

chmod +x test_api.sh
./test_api.sh

6. 常见问题排查

6.1 连接超时

  • 检查服务器防火墙是否开放 8080 端口
  • 检查服务器是否正常运行
  • 检查网络连接

6.2 404 错误

  • 确认 URL 路径正确
  • 确认服务已启动
  • 检查 context-path 配置

6.3 500 错误

  • 查看服务器日志
  • 检查数据库连接
  • 检查请求参数格式

6.4 查看服务日志

# 如果使用启动脚本
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) 进行压力测试

# 安装 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: 并发数

祝测试顺利!如有问题,请查看服务器日志或联系技术支持。