# 宁夏智慧养殖监管平台 API 设计文档 ## 版本历史 | 版本 | 日期 | 作者 | 描述 | |------|------|------|------| | v1.0 | 2025-01-18 | 开发团队 | 初始版本 | | v2.0 | 2025-01-19 | 开发团队 | 全面重构,增加多端支持和标准化规范 | ## 1. API 概述 ### 1.1 设计原则 **RESTful 设计原则:** - 使用标准HTTP方法(GET、POST、PUT、DELETE) - 资源导向的URL设计 - 无状态通信 - 统一的响应格式 - 合理的HTTP状态码使用 **安全性原则:** - JWT Token认证 - HTTPS加密传输 - 输入参数验证 - SQL注入防护 - 访问频率限制 **性能原则:** - 分页查询支持 - 数据缓存机制 - 响应数据压缩 - 异步处理支持 ### 1.2 基础信息 **基础URL:** ``` 开发环境: http://localhost:5350/api 测试环境: https://test-api.nxxmdata.com/api 生产环境: https://api.nxxmdata.com/api ``` **API版本控制:** - 当前版本:v1 - 版本控制方式:URL路径版本控制 - 示例:`/api/v1/farms` **内容类型:** - 请求:`application/json` - 响应:`application/json` - 字符编码:`UTF-8` ### 1.3 认证机制 **JWT Token认证:** ```http Authorization: Bearer ``` **Token获取:** ```http POST /api/v1/auth/login Content-Type: application/json { "username": "admin", "password": "password123" } ``` **Token刷新:** ```http POST /api/v1/auth/refresh Authorization: Bearer ``` ## 2. 通用规范 ### 2.1 请求格式 **请求头规范:** ```http Content-Type: application/json Authorization: Bearer Accept: application/json User-Agent: X-Request-ID: ``` **分页参数:** ```json { "page": 1, "limit": 20, "sort": "created_at", "order": "desc" } ``` **查询参数:** ```json { "filter": { "status": "active", "created_at": { "gte": "2025-01-01", "lte": "2025-01-31" } }, "search": "关键词", "fields": ["id", "name", "status"] } ``` ### 2.2 响应格式 **成功响应:** ```json { "success": true, "code": 200, "message": "操作成功", "data": { // 具体数据 }, "timestamp": "2025-01-19T10:00:00Z", "request_id": "req_123456789" } ``` **分页响应:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "items": [ // 数据列表 ], "pagination": { "page": 1, "limit": 20, "total": 100, "pages": 5, "has_next": true, "has_prev": false } }, "timestamp": "2025-01-19T10:00:00Z", "request_id": "req_123456789" } ``` **错误响应:** ```json { "success": false, "code": 400, "message": "请求参数错误", "error": { "type": "ValidationError", "details": [ { "field": "email", "message": "邮箱格式不正确" } ] }, "timestamp": "2025-01-19T10:00:00Z", "request_id": "req_123456789" } ``` ### 2.3 状态码规范 **成功状态码:** - `200 OK` - 请求成功 - `201 Created` - 资源创建成功 - `204 No Content` - 请求成功,无返回内容 **客户端错误:** - `400 Bad Request` - 请求参数错误 - `401 Unauthorized` - 未认证 - `403 Forbidden` - 权限不足 - `404 Not Found` - 资源不存在 - `409 Conflict` - 资源冲突 - `422 Unprocessable Entity` - 数据验证失败 - `429 Too Many Requests` - 请求频率超限 **服务器错误:** - `500 Internal Server Error` - 服务器内部错误 - `502 Bad Gateway` - 网关错误 - `503 Service Unavailable` - 服务不可用 - `504 Gateway Timeout` - 网关超时 ## 3. 认证与授权 API ### 3.1 用户认证 #### 3.1.1 用户登录 **接口信息:** - **URL**: `/api/v1/auth/login` - **方法**: `POST` - **描述**: 用户登录获取访问令牌 **请求参数:** ```json { "username": "admin", "password": "password123", "remember_me": false, "captcha": "ABCD", "captcha_key": "captcha_123456" } ``` **响应示例:** ```json { "success": true, "code": 200, "message": "登录成功", "data": { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600, "user": { "id": 1, "username": "admin", "real_name": "管理员", "email": "admin@example.com", "roles": ["admin"], "permissions": ["farm:read", "farm:write"] } } } ``` #### 3.1.2 用户登出 **接口信息:** - **URL**: `/api/v1/auth/logout` - **方法**: `POST` - **描述**: 用户登出,使令牌失效 **请求头:** ```http Authorization: Bearer ``` **响应示例:** ```json { "success": true, "code": 200, "message": "登出成功" } ``` #### 3.1.3 令牌刷新 **接口信息:** - **URL**: `/api/v1/auth/refresh` - **方法**: `POST` - **描述**: 使用刷新令牌获取新的访问令牌 **请求参数:** ```json { "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` **响应示例:** ```json { "success": true, "code": 200, "message": "令牌刷新成功", "data": { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600 } } ``` ### 3.2 用户信息 #### 3.2.1 获取当前用户信息 **接口信息:** - **URL**: `/api/v1/auth/me` - **方法**: `GET` - **描述**: 获取当前登录用户的详细信息 **请求头:** ```http Authorization: Bearer ``` **响应示例:** ```json { "success": true, "code": 200, "message": "获取成功", "data": { "id": 1, "username": "admin", "real_name": "管理员", "email": "admin@example.com", "phone": "13800138000", "avatar_url": "https://example.com/avatar.jpg", "status": "active", "roles": [ { "id": 1, "name": "admin", "display_name": "系统管理员" } ], "permissions": [ "farm:read", "farm:write", "user:read", "user:write" ], "last_login_at": "2025-01-19T09:00:00Z", "created_at": "2025-01-01T00:00:00Z" } } ``` ## 4. 用户管理 API ### 4.1 用户列表 **接口信息:** - **URL**: `/api/v1/users` - **方法**: `GET` - **描述**: 获取用户列表(支持分页和筛选) **查询参数:** ``` page=1&limit=20&status=active&search=admin&sort=created_at&order=desc ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "items": [ { "id": 1, "username": "admin", "real_name": "管理员", "email": "admin@example.com", "phone": "13800138000", "status": "active", "roles": ["admin"], "last_login_at": "2025-01-19T09:00:00Z", "created_at": "2025-01-01T00:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 1, "pages": 1, "has_next": false, "has_prev": false } } } ``` ### 4.2 创建用户 **接口信息:** - **URL**: `/api/v1/users` - **方法**: `POST` - **描述**: 创建新用户 **请求参数:** ```json { "username": "newuser", "password": "password123", "real_name": "新用户", "email": "newuser@example.com", "phone": "13800138001", "role_ids": [2, 3], "status": "active" } ``` **响应示例:** ```json { "success": true, "code": 201, "message": "用户创建成功", "data": { "id": 2, "username": "newuser", "real_name": "新用户", "email": "newuser@example.com", "phone": "13800138001", "status": "active", "created_at": "2025-01-19T10:00:00Z" } } ``` ### 4.3 更新用户 **接口信息:** - **URL**: `/api/v1/users/{id}` - **方法**: `PUT` - **描述**: 更新用户信息 **请求参数:** ```json { "real_name": "更新后的姓名", "email": "updated@example.com", "phone": "13800138002", "status": "inactive" } ``` **响应示例:** ```json { "success": true, "code": 200, "message": "用户更新成功", "data": { "id": 2, "username": "newuser", "real_name": "更新后的姓名", "email": "updated@example.com", "phone": "13800138002", "status": "inactive", "updated_at": "2025-01-19T10:30:00Z" } } ``` ### 4.4 删除用户 **接口信息:** - **URL**: `/api/v1/users/{id}` - **方法**: `DELETE` - **描述**: 删除用户(软删除) **响应示例:** ```json { "success": true, "code": 200, "message": "用户删除成功" } ``` ## 5. 养殖场管理 API ### 5.1 养殖场列表 **接口信息:** - **URL**: `/api/v1/farms` - **方法**: `GET` - **描述**: 获取养殖场列表 **查询参数:** ``` page=1&limit=20&status=active&type=pig&scale=large&search=示例养殖场 ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "items": [ { "id": 1, "name": "示例养殖场", "code": "FARM001", "type": "pig", "scale": "large", "address": "宁夏银川市兴庆区示例路123号", "latitude": 38.4872, "longitude": 106.2309, "contact_person": "张三", "contact_phone": "13800138000", "license_number": "NX001234567890", "status": "active", "device_count": 15, "animal_count": 500, "created_at": "2025-01-01T00:00:00Z", "updated_at": "2025-01-19T10:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 1, "pages": 1, "has_next": false, "has_prev": false } } } ``` ### 5.2 获取养殖场详情 **接口信息:** - **URL**: `/api/v1/farms/{id}` - **方法**: `GET` - **描述**: 获取指定养殖场的详细信息 **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "id": 1, "name": "示例养殖场", "code": "FARM001", "type": "pig", "scale": "large", "address": "宁夏银川市兴庆区示例路123号", "latitude": 38.4872, "longitude": 106.2309, "contact_person": "张三", "contact_phone": "13800138000", "license_number": "NX001234567890", "status": "active", "description": "这是一个示例养殖场", "established_date": "2020-01-01", "area": 10000, "capacity": 1000, "devices": [ { "id": 1, "device_id": "DEV001", "device_name": "温度传感器1", "device_type": "temperature", "status": "online" } ], "animals": [ { "id": 1, "tag_id": "PIG001", "breed": "大白猪", "status": "healthy" } ], "created_at": "2025-01-01T00:00:00Z", "updated_at": "2025-01-19T10:00:00Z" } } ``` ### 5.3 创建养殖场 **接口信息:** - **URL**: `/api/v1/farms` - **方法**: `POST` - **描述**: 创建新的养殖场 **请求参数:** ```json { "name": "新养殖场", "code": "FARM002", "type": "cattle", "scale": "medium", "address": "宁夏银川市金凤区新建路456号", "latitude": 38.5000, "longitude": 106.2500, "contact_person": "李四", "contact_phone": "13800138001", "license_number": "NX001234567891", "description": "新建的牛养殖场", "established_date": "2025-01-01", "area": 8000, "capacity": 800 } ``` **响应示例:** ```json { "success": true, "code": 201, "message": "养殖场创建成功", "data": { "id": 2, "name": "新养殖场", "code": "FARM002", "type": "cattle", "scale": "medium", "status": "pending", "created_at": "2025-01-19T10:00:00Z" } } ``` ### 5.4 更新养殖场 **接口信息:** - **URL**: `/api/v1/farms/{id}` - **方法**: `PUT` - **描述**: 更新养殖场信息 **请求参数:** ```json { "name": "更新后的养殖场名称", "contact_person": "王五", "contact_phone": "13800138002", "status": "active" } ``` **响应示例:** ```json { "success": true, "code": 200, "message": "养殖场更新成功", "data": { "id": 1, "name": "更新后的养殖场名称", "contact_person": "王五", "contact_phone": "13800138002", "status": "active", "updated_at": "2025-01-19T10:30:00Z" } } ``` ### 5.5 删除养殖场 **接口信息:** - **URL**: `/api/v1/farms/{id}` - **方法**: `DELETE` - **描述**: 删除养殖场(软删除) **响应示例:** ```json { "success": true, "code": 200, "message": "养殖场删除成功" } ``` ## 6. 设备管理 API ### 6.1 设备列表 **接口信息:** - **URL**: `/api/v1/devices` - **方法**: `GET` - **描述**: 获取设备列表 **查询参数:** ``` page=1&limit=20&farm_id=1&status=online&device_type=temperature ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "items": [ { "id": 1, "farm_id": 1, "device_id": "DEV001", "device_name": "温度传感器1", "device_type": "temperature", "model": "TH-100", "manufacturer": "传感器公司", "location": "猪舍A区", "install_date": "2025-01-01", "status": "online", "last_online_at": "2025-01-19T10:00:00Z", "farm": { "id": 1, "name": "示例养殖场", "code": "FARM001" }, "latest_data": { "temperature": 25.5, "humidity": 60.2, "timestamp": "2025-01-19T10:00:00Z" }, "created_at": "2025-01-01T00:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 1, "pages": 1, "has_next": false, "has_prev": false } } } ``` ### 6.2 获取设备详情 **接口信息:** - **URL**: `/api/v1/devices/{id}` - **方法**: `GET` - **描述**: 获取指定设备的详细信息 **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "id": 1, "farm_id": 1, "device_id": "DEV001", "device_name": "温度传感器1", "device_type": "temperature", "model": "TH-100", "manufacturer": "传感器公司", "location": "猪舍A区", "install_date": "2025-01-01", "status": "online", "last_online_at": "2025-01-19T10:00:00Z", "config": { "sampling_interval": 60, "alert_threshold": { "temperature_max": 30, "temperature_min": 10, "humidity_max": 80, "humidity_min": 40 } }, "farm": { "id": 1, "name": "示例养殖场", "code": "FARM001" }, "recent_data": [ { "temperature": 25.5, "humidity": 60.2, "timestamp": "2025-01-19T10:00:00Z" } ], "created_at": "2025-01-01T00:00:00Z", "updated_at": "2025-01-19T10:00:00Z" } } ``` ### 6.3 创建设备 **接口信息:** - **URL**: `/api/v1/devices` - **方法**: `POST` - **描述**: 添加新设备 **请求参数:** ```json { "farm_id": 1, "device_id": "DEV002", "device_name": "湿度传感器1", "device_type": "humidity", "model": "HU-200", "manufacturer": "传感器公司", "location": "猪舍B区", "install_date": "2025-01-19", "config": { "sampling_interval": 30, "alert_threshold": { "humidity_max": 85, "humidity_min": 35 } } } ``` **响应示例:** ```json { "success": true, "code": 201, "message": "设备创建成功", "data": { "id": 2, "device_id": "DEV002", "device_name": "湿度传感器1", "device_type": "humidity", "status": "offline", "created_at": "2025-01-19T10:00:00Z" } } ``` ### 6.4 获取设备数据 **接口信息:** - **URL**: `/api/v1/devices/{id}/data` - **方法**: `GET` - **描述**: 获取设备历史数据 **查询参数:** ``` start_time=2025-01-19T00:00:00Z&end_time=2025-01-19T23:59:59Z&data_type=temperature&limit=100 ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "device_id": "DEV001", "device_name": "温度传感器1", "data_points": [ { "timestamp": "2025-01-19T10:00:00Z", "temperature": 25.5, "humidity": 60.2, "ammonia": 15.8, "co2": 800 }, { "timestamp": "2025-01-19T10:01:00Z", "temperature": 25.6, "humidity": 60.1, "ammonia": 15.9, "co2": 805 } ], "statistics": { "count": 2, "avg_temperature": 25.55, "max_temperature": 25.6, "min_temperature": 25.5 } } } ``` ## 7. 动物管理 API ### 7.1 动物列表 **接口信息:** - **URL**: `/api/v1/animals` - **方法**: `GET` - **描述**: 获取动物列表 **查询参数:** ``` page=1&limit=20&farm_id=1&breed=大白猪&status=healthy&gender=male ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "items": [ { "id": 1, "farm_id": 1, "tag_id": "PIG001", "breed": "大白猪", "gender": "male", "birth_date": "2024-06-01", "weight": 85.5, "status": "healthy", "location": "猪舍A区-栏位001", "farm": { "id": 1, "name": "示例养殖场", "code": "FARM001" }, "health_records": [ { "id": 1, "check_date": "2025-01-15", "health_status": "healthy", "notes": "健康状况良好" } ], "created_at": "2024-06-01T00:00:00Z", "updated_at": "2025-01-19T10:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 1, "pages": 1, "has_next": false, "has_prev": false } } } ``` ### 7.2 获取动物详情 **接口信息:** - **URL**: `/api/v1/animals/{id}` - **方法**: `GET` - **描述**: 获取指定动物的详细信息 **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "id": 1, "farm_id": 1, "tag_id": "PIG001", "breed": "大白猪", "gender": "male", "birth_date": "2024-06-01", "weight": 85.5, "status": "healthy", "location": "猪舍A区-栏位001", "parent_info": { "father_tag": "PIG_FATHER_001", "mother_tag": "PIG_MOTHER_001" }, "farm": { "id": 1, "name": "示例养殖场", "code": "FARM001" }, "health_records": [ { "id": 1, "check_date": "2025-01-15", "health_status": "healthy", "temperature": 38.5, "weight": 85.5, "notes": "健康状况良好", "veterinarian": "兽医张三", "created_at": "2025-01-15T10:00:00Z" } ], "vaccination_records": [ { "id": 1, "vaccine_name": "猪瘟疫苗", "vaccination_date": "2024-07-01", "next_due_date": "2025-07-01", "veterinarian": "兽医李四", "created_at": "2024-07-01T10:00:00Z" } ], "created_at": "2024-06-01T00:00:00Z", "updated_at": "2025-01-19T10:00:00Z" } } ``` ### 7.3 创建动物档案 **接口信息:** - **URL**: `/api/v1/animals` - **方法**: `POST` - **描述**: 创建新的动物档案 **请求参数:** ```json { "farm_id": 1, "tag_id": "PIG002", "breed": "长白猪", "gender": "female", "birth_date": "2024-08-01", "weight": 75.0, "location": "猪舍A区-栏位002", "parent_info": { "father_tag": "PIG_FATHER_002", "mother_tag": "PIG_MOTHER_002" }, "notes": "新引进的种猪" } ``` **响应示例:** ```json { "success": true, "code": 201, "message": "动物档案创建成功", "data": { "id": 2, "tag_id": "PIG002", "breed": "长白猪", "gender": "female", "status": "healthy", "created_at": "2025-01-19T10:00:00Z" } } ``` ## 8. 告警管理 API ### 8.1 告警列表 **接口信息:** - **URL**: `/api/v1/alerts` - **方法**: `GET` - **描述**: 获取告警列表 **查询参数:** ``` page=1&limit=20&farm_id=1&level=warning&status=pending&alert_type=temperature ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "items": [ { "id": 1, "farm_id": 1, "device_id": 1, "alert_type": "temperature", "level": "warning", "title": "温度过高告警", "message": "猪舍A区温度达到32°C,超过预设阈值30°C", "status": "pending", "trigger_value": 32.0, "threshold_value": 30.0, "trigger_time": "2025-01-19T10:00:00Z", "farm": { "id": 1, "name": "示例养殖场", "code": "FARM001" }, "device": { "id": 1, "device_id": "DEV001", "device_name": "温度传感器1", "location": "猪舍A区" }, "created_at": "2025-01-19T10:00:00Z", "updated_at": "2025-01-19T10:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 1, "pages": 1, "has_next": false, "has_prev": false } } } ``` ### 8.2 处理告警 **接口信息:** - **URL**: `/api/v1/alerts/{id}/handle` - **方法**: `POST` - **描述**: 处理告警 **请求参数:** ```json { "action": "resolved", "handler_notes": "已调整通风系统,温度恢复正常", "solution": "增加通风量,调整温控设备参数" } ``` **响应示例:** ```json { "success": true, "code": 200, "message": "告警处理成功", "data": { "id": 1, "status": "resolved", "handled_at": "2025-01-19T10:30:00Z", "handler_id": 1, "handler_name": "管理员", "handler_notes": "已调整通风系统,温度恢复正常" } } ``` ## 9. 数据统计 API ### 9.1 概览统计 **接口信息:** - **URL**: `/api/v1/stats/overview` - **方法**: `GET` - **描述**: 获取系统概览统计数据 **查询参数:** ``` date_range=7d&farm_id=1 ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "farms": { "total": 10, "active": 8, "inactive": 2 }, "devices": { "total": 150, "online": 145, "offline": 5, "maintenance": 0 }, "animals": { "total": 5000, "healthy": 4950, "sick": 30, "quarantine": 20 }, "alerts": { "total": 25, "pending": 5, "resolved": 20, "critical": 2, "warning": 15, "info": 8 }, "trends": { "farms_growth": 5.2, "devices_growth": 8.1, "animals_growth": 12.5, "alerts_reduction": -15.3 } } } ``` ### 9.2 设备数据统计 **接口信息:** - **URL**: `/api/v1/stats/devices` - **方法**: `GET` - **描述**: 获取设备数据统计 **查询参数:** ``` farm_id=1&device_type=temperature&start_time=2025-01-19T00:00:00Z&end_time=2025-01-19T23:59:59Z&interval=hour ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "device_type": "temperature", "time_range": { "start": "2025-01-19T00:00:00Z", "end": "2025-01-19T23:59:59Z" }, "statistics": { "avg_value": 25.5, "max_value": 32.0, "min_value": 18.5, "data_points": 1440 }, "time_series": [ { "timestamp": "2025-01-19T00:00:00Z", "avg_value": 20.5, "max_value": 22.0, "min_value": 19.0, "count": 60 }, { "timestamp": "2025-01-19T01:00:00Z", "avg_value": 21.2, "max_value": 23.5, "min_value": 19.8, "count": 60 } ] } } ``` ### 9.3 告警统计 **接口信息:** - **URL**: `/api/v1/stats/alerts` - **方法**: `GET` - **描述**: 获取告警统计数据 **查询参数:** ``` farm_id=1&date_range=30d&group_by=level ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "total_alerts": 150, "resolved_alerts": 135, "pending_alerts": 15, "resolution_rate": 90.0, "avg_resolution_time": 45, "by_level": [ { "level": "critical", "count": 10, "percentage": 6.7 }, { "level": "warning", "count": 80, "percentage": 53.3 }, { "level": "info", "count": 60, "percentage": 40.0 } ], "by_type": [ { "type": "temperature", "count": 60, "percentage": 40.0 }, { "type": "humidity", "count": 45, "percentage": 30.0 }, { "type": "ammonia", "count": 30, "percentage": 20.0 }, { "type": "system", "count": 15, "percentage": 10.0 } ], "trend": [ { "date": "2025-01-13", "count": 8 }, { "date": "2025-01-14", "count": 12 } ] } } ``` ## 10. 文件管理 API ### 10.1 文件上传 **接口信息:** - **URL**: `/api/v1/files/upload` - **方法**: `POST` - **描述**: 上传文件 **请求格式:** ```http Content-Type: multipart/form-data file: type: image|document|video category: avatar|farm_image|device_manual|report ``` **响应示例:** ```json { "success": true, "code": 200, "message": "文件上传成功", "data": { "id": 1, "filename": "farm_image_001.jpg", "original_name": "养殖场照片.jpg", "file_path": "/uploads/images/2025/01/19/farm_image_001.jpg", "file_url": "https://cdn.nxxmdata.com/uploads/images/2025/01/19/farm_image_001.jpg", "file_size": 1024000, "mime_type": "image/jpeg", "type": "image", "category": "farm_image", "created_at": "2025-01-19T10:00:00Z" } } ``` ### 10.2 文件下载 **接口信息:** - **URL**: `/api/v1/files/{id}/download` - **方法**: `GET` - **描述**: 下载文件 **响应:** ```http Content-Type: application/octet-stream Content-Disposition: attachment; filename="farm_image_001.jpg" ``` ### 10.3 文件删除 **接口信息:** - **URL**: `/api/v1/files/{id}` - **方法**: `DELETE` - **描述**: 删除文件 **响应示例:** ```json { "success": true, "code": 200, "message": "文件删除成功" } ``` ## 11. 地图服务 API ### 11.1 获取地图数据 **接口信息:** - **URL**: `/api/v1/map/farms` - **方法**: `GET` - **描述**: 获取养殖场地图标注数据 **查询参数:** ``` bounds=38.4000,106.2000,38.5000,106.3000&zoom=10&status=active ``` **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "farms": [ { "id": 1, "name": "示例养殖场", "code": "FARM001", "latitude": 38.4872, "longitude": 106.2309, "status": "active", "type": "pig", "scale": "large", "device_count": 15, "animal_count": 500, "alert_count": 2, "marker_icon": "farm_pig_large", "popup_info": { "title": "示例养殖场", "description": "大型生猪养殖场", "contact": "张三 - 13800138000", "status_text": "正常运营" } } ], "bounds": { "north": 38.5000, "south": 38.4000, "east": 106.3000, "west": 106.2000 }, "center": { "latitude": 38.4500, "longitude": 106.2500 } } } ``` ### 11.2 地理编码 **接口信息:** - **URL**: `/api/v1/map/geocode` - **方法**: `GET` - **描述**: 地址转换为经纬度坐标 **查询参数:** ``` address=宁夏银川市兴庆区示例路123号 ``` **响应示例:** ```json { "success": true, "code": 200, "message": "地理编码成功", "data": { "address": "宁夏银川市兴庆区示例路123号", "location": { "latitude": 38.4872, "longitude": 106.2309 }, "formatted_address": "宁夏回族自治区银川市兴庆区示例路123号", "address_components": { "province": "宁夏回族自治区", "city": "银川市", "district": "兴庆区", "street": "示例路", "street_number": "123号" }, "confidence": 95 } } ``` ## 12. 系统配置 API ### 12.1 获取系统配置 **接口信息:** - **URL**: `/api/v1/config` - **方法**: `GET` - **描述**: 获取系统配置信息 **响应示例:** ```json { "success": true, "code": 200, "message": "查询成功", "data": { "system": { "name": "宁夏智慧养殖监管平台", "version": "2.0.0", "build": "20250119", "environment": "production" }, "features": { "multi_tenant": true, "real_time_monitoring": true, "mobile_app": true, "data_export": true }, "limits": { "max_farms_per_user": 10, "max_devices_per_farm": 100, "max_file_size": 10485760, "api_rate_limit": 1000 }, "integrations": { "baidu_map": { "enabled": true, "api_key": "ak_***" }, "sms_service": { "enabled": true, "provider": "aliyun" }, "email_service": { "enabled": true, "smtp_host": "smtp.example.com" } } } } ``` ### 12.2 更新系统配置 **接口信息:** - **URL**: `/api/v1/config` - **方法**: `PUT` - **描述**: 更新系统配置(需要管理员权限) **请求参数:** ```json { "limits": { "max_farms_per_user": 15, "api_rate_limit": 1500 }, "integrations": { "sms_service": { "enabled": false } } } ``` **响应示例:** ```json { "success": true, "code": 200, "message": "配置更新成功", "data": { "updated_fields": [ "limits.max_farms_per_user", "limits.api_rate_limit", "integrations.sms_service.enabled" ], "updated_at": "2025-01-19T10:30:00Z" } } ``` ## 13. 错误处理 ### 13.1 错误码定义 **通用错误码:** - `10000` - 系统内部错误 - `10001` - 参数验证失败 - `10002` - 资源不存在 - `10003` - 权限不足 - `10004` - 请求频率超限 - `10005` - 服务暂不可用 **认证相关错误码:** - `20001` - 用户名或密码错误 - `20002` - Token无效或已过期 - `20003` - 账户被禁用 - `20004` - 登录失败次数过多 **业务相关错误码:** - `30001` - 养殖场代码已存在 - `30002` - 设备ID已存在 - `30003` - 动物标签ID已存在 - `30004` - 文件格式不支持 - `30005` - 文件大小超限 ### 13.2 错误响应示例 **参数验证错误:** ```json { "success": false, "code": 10001, "message": "参数验证失败", "error": { "type": "ValidationError", "details": [ { "field": "email", "message": "邮箱格式不正确", "value": "invalid-email" }, { "field": "phone", "message": "手机号码格式不正确", "value": "123" } ] }, "timestamp": "2025-01-19T10:00:00Z", "request_id": "req_123456789" } ``` **权限不足错误:** ```json { "success": false, "code": 10003, "message": "权限不足", "error": { "type": "PermissionError", "required_permission": "farm:write", "user_permissions": ["farm:read"] }, "timestamp": "2025-01-19T10:00:00Z", "request_id": "req_123456789" } ``` ## 14. API 测试 ### 14.1 测试环境 **测试服务器:** - 地址:`https://test-api.nxxmdata.com` - 测试账号:`test_user` - 测试密码:`test_password_123` **Postman集合:** - 下载地址:`https://api.nxxmdata.com/docs/postman-collection.json` - 包含所有API接口的测试用例 - 自动化测试脚本 ### 14.2 测试用例 **用户登录测试:** ```bash curl -X POST https://test-api.nxxmdata.com/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{ "username": "test_user", "password": "test_password_123" }' ``` **获取养殖场列表测试:** ```bash curl -X GET https://test-api.nxxmdata.com/api/v1/farms \ -H "Authorization: Bearer " \ -H "Accept: application/json" ``` ## 15. SDK 和工具 ### 15.1 JavaScript SDK **安装:** ```bash npm install @nxxmdata/api-sdk ``` **使用示例:** ```javascript import { NxxmDataAPI } from '@nxxmdata/api-sdk'; const api = new NxxmDataAPI({ baseURL: 'https://api.nxxmdata.com', apiKey: 'your-api-key' }); // 登录 const loginResult = await api.auth.login({ username: 'admin', password: 'password123' }); // 获取养殖场列表 const farms = await api.farms.list({ page: 1, limit: 20, status: 'active' }); ``` ### 15.2 Python SDK **安装:** ```bash pip install nxxmdata-api-sdk ``` **使用示例:** ```python from nxxmdata_api import NxxmDataAPI api = NxxmDataAPI( base_url='https://api.nxxmdata.com', api_key='your-api-key' ) # 登录 login_result = api.auth.login( username='admin', password='password123' ) # 获取养殖场列表 farms = api.farms.list( page=1, limit=20, status='active' ) ``` ## 16. 版本更新 ### 16.1 版本兼容性 **向后兼容性:** - 主版本号变更可能包含破坏性更改 - 次版本号变更保持向后兼容 - 修订版本号仅包含bug修复 **废弃策略:** - 废弃功能将在下一个主版本中移除 - 提前6个月通知废弃计划 - 提供迁移指南和工具 ### 16.2 更新日志 **v2.0.0 (2025-01-19):** - 全面重构API架构 - 增加多端支持 - 优化响应格式 - 增强安全性 - 添加更多统计接口 **v1.0.0 (2025-01-18):** - 初始版本发布 - 基础CRUD功能 - JWT认证 - 基本统计功能 --- **文档维护说明:** - 本文档将随API版本更新而更新 - 所有接口变更都会在此文档中体现 - 如有疑问请联系开发团队 **联系方式:** - 技术支持:tech-support@nxxmdata.com - API问题:api-support@nxxmdata.com - 文档反馈:docs@nxxmdata.com *最后更新时间:2025-01-19* *文档版本:v2.0* *维护人员:开发团队*