Files
nxxmdata/docs/API.md

894 lines
15 KiB
Markdown
Raw Normal View History

# API 文档
## 概述
宁夏智慧养殖监管平台提供全面的RESTful API支持农场管理、设备监控、动物健康管理、用户管理、订单管理等核心功能。
## 基础信息
- **Base URL**: `http://localhost:5350/api` (开发环境)
- **Authentication**: JWT Bearer Token
- **Content-Type**: `application/json`
- **API Version**: v1.0
## 认证机制
### JWT Token认证
所有需要认证的API都需要在请求头中包含JWT Token
```http
Authorization: Bearer <your_jwt_token>
```
### Token获取
通过登录接口获取Token
```http
POST /api/auth/login
Content-Type: application/json
{
"username": "your_username",
"password": "your_password"
}
```
## 通用响应格式
### 成功响应
```json
{
"success": true,
"data": {},
"message": "操作成功",
"timestamp": "2025-01-18T10:30:00Z"
}
```
### 错误响应
```json
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "错误描述",
"details": "详细错误信息"
},
"timestamp": "2025-01-18T10:30:00Z"
}
```
### HTTP状态码
- `200` - 请求成功
- `201` - 创建成功
- `400` - 请求参数错误
- `401` - 未认证或Token过期
- `403` - 权限不足
- `404` - 资源不存在
- `409` - 资源冲突
- `500` - 服务器内部错误
## 认证相关API
### 用户登录
```http
POST /api/auth/login
```
**请求体:**
```json
{
"username": "admin",
"password": "password123"
}
```
**响应:**
```json
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "admin",
"email": "admin@example.com",
"roles": ["admin"]
}
}
}
```
### 用户注册
```http
POST /api/auth/register
```
**请求体:**
```json
{
"username": "newuser",
"email": "newuser@example.com",
"password": "password123",
"phone": "13800138000"
}
```
### 用户登出
```http
POST /api/auth/logout
```
**需要认证**: 是
### 验证Token
```http
GET /api/auth/verify
```
**需要认证**: 是
## 用户管理API
### 获取用户列表
```http
GET /api/users
```
**需要认证**: 是
**权限要求**: admin
**查询参数:**
- `page` (int): 页码默认1
- `limit` (int): 每页数量默认10
- `search` (string): 搜索关键词
- `status` (string): 用户状态 (`active`, `inactive`, `banned`)
**响应:**
```json
{
"success": true,
"data": {
"users": [
{
"id": 1,
"username": "admin",
"email": "admin@example.com",
"phone": "13800138000",
"status": "active",
"created_at": "2025-01-01T00:00:00Z",
"roles": ["admin"]
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"pages": 1
}
}
}
```
### 获取用户详情
```http
GET /api/users/{id}
```
**需要认证**: 是
### 创建用户
```http
POST /api/users
```
**需要认证**: 是
**权限要求**: admin
**请求体:**
```json
{
"username": "newuser",
"email": "newuser@example.com",
"password": "password123",
"phone": "13800138000",
"status": "active",
"roles": ["user"]
}
```
### 更新用户
```http
PUT /api/users/{id}
```
**需要认证**: 是
### 删除用户
```http
DELETE /api/users/{id}
```
**需要认证**: 是
**权限要求**: admin
## 养殖场管理API
### 获取养殖场列表
```http
GET /api/farms
```
**需要认证**: 是
**查询参数:**
- `page` (int): 页码默认1
- `limit` (int): 每页数量默认10
- `type` (string): 养殖场类型
- `status` (string): 状态 (`active`, `inactive`, `maintenance`)
**响应:**
```json
{
"success": true,
"data": {
"farms": [
{
"id": 1,
"name": "宁夏示范养殖场",
"type": "奶牛养殖",
"location": {
"lat": 38.46667,
"lng": 106.26667
},
"address": "宁夏回族自治区银川市金凤区",
"contact": "张经理",
"phone": "13800138000",
"status": "active",
"created_at": "2025-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"pages": 1
}
}
}
```
### 获取公开养殖场数据
```http
GET /api/farms/public
```
**需要认证**: 否
### 获取养殖场详情
```http
GET /api/farms/{id}
```
**需要认证**: 是
### 创建养殖场
```http
POST /api/farms
```
**需要认证**: 是
**权限要求**: manager
**请求体:**
```json
{
"name": "新养殖场",
"type": "养猪场",
"longitude": 106.26667,
"latitude": 38.46667,
"address": "详细地址",
"owner": "联系人姓名",
"phone": "13800138000",
"status": "active"
}
```
### 更新养殖场
```http
PUT /api/farms/{id}
```
**需要认证**: 是
**权限要求**: manager
### 删除养殖场
```http
DELETE /api/farms/{id}
```
**需要认证**: 是
**权限要求**: admin
## 设备管理API
### 获取设备列表
```http
GET /api/devices
```
**需要认证**: 是
**查询参数:**
- `page` (int): 页码
- `limit` (int): 每页数量
- `farm_id` (int): 养殖场ID
- `type` (string): 设备类型
- `status` (string): 设备状态 (`online`, `offline`, `maintenance`)
### 获取设备详情
```http
GET /api/devices/{id}
```
**需要认证**: 是
**响应:**
```json
{
"success": true,
"data": {
"id": 1,
"name": "温度传感器001",
"type": "温度传感器",
"status": "online",
"farm_id": 1,
"metrics": {
"temperature": 25.5,
"humidity": 60
},
"last_maintenance": "2025-01-01T00:00:00Z",
"installation_date": "2024-01-01T00:00:00Z",
"farm": {
"id": 1,
"name": "宁夏示范养殖场"
}
}
}
```
### 创建设备
```http
POST /api/devices
```
**需要认证**: 是
**权限要求**: manager
**请求体:**
```json
{
"name": "新设备",
"type": "传感器",
"farm_id": 1,
"installation_date": "2025-01-18",
"metrics": {
"temperature": 25.0
}
}
```
### 更新设备
```http
PUT /api/devices/{id}
```
**需要认证**: 是
**权限要求**: manager
### 删除设备
```http
DELETE /api/devices/{id}
```
**需要认证**: 是
**权限要求**: admin
## 动物管理API
### 获取动物列表
```http
GET /api/animals
```
**需要认证**: 是
**查询参数:**
- `page` (int): 页码
- `limit` (int): 每页数量
- `farm_id` (int): 养殖场ID
- `type` (string): 动物类型
- `health_status` (string): 健康状态 (`healthy`, `sick`, `quarantine`)
### 获取动物详情
```http
GET /api/animals/{id}
```
**需要认证**: 是
### 创建动物记录
```http
POST /api/animals
```
**需要认证**: 是
**权限要求**: manager
**请求体:**
```json
{
"type": "奶牛",
"count": 100,
"farm_id": 1,
"health_status": "healthy",
"notes": "备注信息"
}
```
### 更新动物记录
```http
PUT /api/animals/{id}
```
**需要认证**: 是
**权限要求**: manager
### 删除动物记录
```http
DELETE /api/animals/{id}
```
**需要认证**: 是
**权限要求**: admin
## 预警管理API
### 获取预警列表
```http
GET /api/alerts
```
**需要认证**: 是
**查询参数:**
- `page` (int): 页码
- `limit` (int): 每页数量
- `farm_id` (int): 养殖场ID
- `level` (string): 预警级别 (`low`, `medium`, `high`, `critical`)
- `status` (string): 预警状态 (`active`, `acknowledged`, `resolved`)
**响应:**
```json
{
"success": true,
"data": {
"alerts": [
{
"id": 1,
"type": "temperature_high",
"level": "high",
"message": "温度过高警报",
"status": "active",
"farm_id": 1,
"device_id": 1,
"created_at": "2025-01-18T10:00:00Z",
"farm": {
"name": "宁夏示范养殖场"
},
"device": {
"name": "温度传感器001"
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"pages": 1
}
}
}
```
### 确认预警
```http
PUT /api/alerts/{id}/acknowledge
```
**需要认证**: 是
**权限要求**: manager
### 解决预警
```http
PUT /api/alerts/{id}/resolve
```
**需要认证**: 是
**权限要求**: manager
**请求体:**
```json
{
"resolution_notes": "问题已解决,温度已恢复正常"
}
```
## 产品管理API
### 获取产品列表
```http
GET /api/products
```
**需要认证**: 是
**查询参数:**
- `page` (int): 页码
- `limit` (int): 每页数量
- `search` (string): 搜索关键词
- `is_active` (boolean): 是否激活
### 获取产品详情
```http
GET /api/products/{id}
```
**需要认证**: 是
### 创建产品
```http
POST /api/products
```
**需要认证**: 是
**权限要求**: manager
**请求体:**
```json
{
"name": "优质鲜牛奶",
"description": "新鲜优质牛奶,富含营养",
"price": 5000,
"stock": 1000,
"image_url": "/uploads/products/milk.jpg",
"is_active": true
}
```
### 更新产品
```http
PUT /api/products/{id}
```
**需要认证**: 是
**权限要求**: manager
### 删除产品
```http
DELETE /api/products/{id}
```
**需要认证**: 是
**权限要求**: admin
## 订单管理API
### 获取订单列表
```http
GET /api/orders
```
**需要认证**: 是
**查询参数:**
- `page` (int): 页码
- `limit` (int): 每页数量
- `user_id` (int): 用户ID
- `status` (string): 订单状态 (`pending`, `processing`, `shipped`, `delivered`, `cancelled`)
- `payment_status` (string): 支付状态 (`unpaid`, `paid`, `refunded`)
### 获取订单详情
```http
GET /api/orders/{id}
```
**需要认证**: 是
**响应:**
```json
{
"success": true,
"data": {
"id": 1,
"user_id": 1,
"total_amount": 10000,
"status": "pending",
"payment_status": "unpaid",
"shipping_address": "收货地址",
"created_at": "2025-01-18T10:00:00Z",
"user": {
"username": "用户名",
"email": "user@example.com"
},
"items": [
{
"id": 1,
"product_id": 1,
"quantity": 2,
"price": 5000,
"product": {
"name": "优质鲜牛奶",
"image_url": "/uploads/products/milk.jpg"
}
}
]
}
}
```
### 创建订单
```http
POST /api/orders
```
**需要认证**: 是
**请求体:**
```json
{
"items": [
{
"product_id": 1,
"quantity": 2
}
],
"shipping_address": "收货地址"
}
```
### 更新订单状态
```http
PUT /api/orders/{id}/status
```
**需要认证**: 是
**权限要求**: manager
**请求体:**
```json
{
"status": "processing"
}
```
## 统计分析API
### 系统概览统计
```http
GET /api/stats/overview
```
**需要认证**: 是
**响应:**
```json
{
"success": true,
"data": {
"farms": {
"total": 10,
"active": 8,
"inactive": 2
},
"devices": {
"total": 50,
"online": 45,
"offline": 3,
"maintenance": 2
},
"animals": {
"total": 5000,
"healthy": 4800,
"sick": 150,
"quarantine": 50
},
"alerts": {
"active": 5,
"resolved_today": 12
}
}
}
```
### 养殖场统计
```http
GET /api/stats/farms/{id}
```
**需要认证**: 是
### 预警统计
```http
GET /api/stats/alerts
```
**需要认证**: 是
**查询参数:**
- `timeRange` (string): 时间范围 (`today`, `week`, `month`)
### 动物健康统计
```http
GET /api/stats/animals
```
**需要认证**: 是
**查询参数:**
- `farm_id` (int): 养殖场ID
## 地图服务API
### 获取地图数据
```http
GET /api/map/data
```
**需要认证**: 是
**响应:**
```json
{
"success": true,
"data": {
"farms": [
{
"id": 1,
"name": "宁夏示范养殖场",
"location": {
"lat": 38.46667,
"lng": 106.26667
},
"type": "奶牛养殖",
"status": "active",
"devices_count": 5,
"animals_count": 500
}
]
}
}
```
## 性能监控API
### 获取性能指标
```http
GET /api/performance/metrics
```
**需要认证**: 是
**权限要求**: admin
### 获取系统资源信息
```http
GET /api/performance/system
```
**需要认证**: 是
**权限要求**: admin
### 获取数据库性能信息
```http
GET /api/performance/database
```
**需要认证**: 是
**权限要求**: admin
### 获取API性能统计
```http
GET /api/performance/api
```
**需要认证**: 是
**权限要求**: admin
## 文件上传API
### 上传头像
```http
POST /api/upload/avatar
```
**需要认证**: 是
**Content-Type**: `multipart/form-data`
**请求:**
```
Content-Type: multipart/form-data
avatar: [文件]
```
### 上传产品图片
```http
POST /api/upload/product
```
**需要认证**: 是
**权限要求**: manager
**Content-Type**: `multipart/form-data`
## 错误代码参考
| 错误代码 | 描述 | HTTP状态码 |
|---------|------|------------|
| `INVALID_CREDENTIALS` | 用户名或密码错误 | 401 |
| `TOKEN_EXPIRED` | Token已过期 | 401 |
| `TOKEN_INVALID` | Token无效 | 401 |
| `INSUFFICIENT_PERMISSIONS` | 权限不足 | 403 |
| `RESOURCE_NOT_FOUND` | 资源不存在 | 404 |
| `VALIDATION_ERROR` | 参数验证失败 | 400 |
| `DUPLICATE_RESOURCE` | 资源重复 | 409 |
| `DATABASE_ERROR` | 数据库错误 | 500 |
| `INTERNAL_SERVER_ERROR` | 服务器内部错误 | 500 |
## API限制
### 频率限制
- 登录接口每分钟最多5次尝试
- 普通API每分钟最多1000次请求
- 上传接口每分钟最多10次请求
### 文件上传限制
- 头像最大2MB支持jpg、png格式
- 产品图片最大5MB支持jpg、png、webp格式
## SDK示例
### JavaScript/Node.js
```javascript
// 安装: npm install axios
const axios = require('axios');
class NxxmdataAPI {
constructor(baseURL, token) {
this.client = axios.create({
baseURL: baseURL,
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
}
async getFarms(params = {}) {
const response = await this.client.get('/farms', { params });
return response.data;
}
async createFarm(farmData) {
const response = await this.client.post('/farms', farmData);
return response.data;
}
}
// 使用示例
const api = new NxxmdataAPI('http://localhost:5350/api', 'your_token');
const farms = await api.getFarms({ page: 1, limit: 10 });
```
### Python
```python
import requests
class NxxmdataAPI:
def __init__(self, base_url, token):
self.base_url = base_url
self.headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
def get_farms(self, params=None):
response = requests.get(f'{self.base_url}/farms',
headers=self.headers, params=params)
return response.json()
def create_farm(self, farm_data):
response = requests.post(f'{self.base_url}/farms',
headers=self.headers, json=farm_data)
return response.json()
# 使用示例
api = NxxmdataAPI('http://localhost:5350/api', 'your_token')
farms = api.get_farms({'page': 1, 'limit': 10})
```
## 测试环境
### Swagger文档
访问 `http://localhost:5350/api-docs` 查看交互式API文档。
### Postman集合
提供完整的Postman集合文件包含所有API的示例请求。
---
## 更新记录
- **v1.0** (2025-01-18): 初始版本包含所有核心API
- 定期更新请关注CHANGELOG.md
## 联系方式
如有API相关问题请联系
- 技术支持: api-support@nxxmdata.com
- 文档反馈: docs@nxxmdata.com
*最后更新: 2025年1月*