127 lines
4.0 KiB
Markdown
127 lines
4.0 KiB
Markdown
|
|
# 前端API路径修复说明
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
- **错误URL**: `https://ad.ningmuyun.com/api/government/government/positions`
|
|||
|
|
- **问题**: URL中出现两个`government`,导致路径重复
|
|||
|
|
- **影响范围**: 政府端管理系统所有政府相关API接口
|
|||
|
|
|
|||
|
|
## 问题根因分析
|
|||
|
|
|
|||
|
|
### 1. 前端API配置问题 ❌
|
|||
|
|
在 `government-admin/src/utils/api.js` 中,政府相关的API接口缺少 `/api` 前缀:
|
|||
|
|
|
|||
|
|
**原始错误配置**:
|
|||
|
|
```javascript
|
|||
|
|
// 部门管理
|
|||
|
|
departments: {
|
|||
|
|
getList: (params) => instance.get('/government/departments', { params })
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 岗位管理
|
|||
|
|
positions: {
|
|||
|
|
getList: (params) => instance.get('/government/positions', { params })
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 养殖户管理
|
|||
|
|
farmers: {
|
|||
|
|
getList: (params) => instance.get('/government/farmers', { params }),
|
|||
|
|
create: (data) => instance.post('/government/farmers', data),
|
|||
|
|
// ... 其他方法
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 路径构造过程
|
|||
|
|
1. **前端baseURL**: `http://localhost:5352/api` (开发环境)
|
|||
|
|
2. **API调用**: `instance.get('/government/positions')`
|
|||
|
|
3. **实际请求**: `http://localhost:5352/api/government/positions` ✅ 正确
|
|||
|
|
|
|||
|
|
但在生产环境中:
|
|||
|
|
1. **前端baseURL**: `https://ad.ningmuyun.com` (生产环境)
|
|||
|
|
2. **API调用**: `instance.get('/government/positions')`
|
|||
|
|
3. **实际请求**: `https://ad.ningmuyun.com/government/positions` ❌ 缺少 `/api` 前缀
|
|||
|
|
4. **nginx匹配**: 匹配到 `location ^~ /government/` (静态文件规则)
|
|||
|
|
5. **重定向**: 可能被重写为 `/api/government/government/positions` ❌ 重复
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 修复前端API配置
|
|||
|
|
将所有政府相关API接口添加 `/api` 前缀:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 部门管理
|
|||
|
|
departments: {
|
|||
|
|
getList: (params) => instance.get('/api/government/departments', { params })
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 岗位管理
|
|||
|
|
positions: {
|
|||
|
|
getList: (params) => instance.get('/api/government/positions', { params })
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 养殖户管理
|
|||
|
|
farmers: {
|
|||
|
|
getList: (params) => instance.get('/api/government/farmers', { params }),
|
|||
|
|
create: (data) => instance.post('/api/government/farmers', data),
|
|||
|
|
update: (id, data) => instance.put(`/api/government/farmers/${id}`, data),
|
|||
|
|
delete: (id) => instance.delete(`/api/government/farmers/${id}`),
|
|||
|
|
resetPassword: (id) => instance.post(`/api/government/farmers/${id}/reset-password`)
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 养殖类型相关
|
|||
|
|
farmTypes: {
|
|||
|
|
getList: () => instance.get('/api/government/farm-types')
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 养殖种类相关
|
|||
|
|
animalTypes: {
|
|||
|
|
getList: () => instance.get('/api/government/animal-types')
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 智能项圈管理
|
|||
|
|
collars: {
|
|||
|
|
getList: (params) => instance.get('/api/government/collars', { params }),
|
|||
|
|
create: (data) => instance.post('/api/government/collars', data),
|
|||
|
|
update: (id, data) => instance.put(`/api/government/collars/${id}`, data),
|
|||
|
|
delete: (id) => instance.delete(`/api/government/collars/${id}`)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 修复后的路径映射
|
|||
|
|
|
|||
|
|
| 前端调用 | 生产环境URL | nginx匹配 | 后端路由 | 状态 |
|
|||
|
|
|---------|------------|----------|---------|------|
|
|||
|
|
| `/api/government/departments` | `https://ad.ningmuyun.com/api/government/departments` | `^~ /api/government/` | `/api/government/departments` | ✅ 正确 |
|
|||
|
|
| `/api/government/positions` | `https://ad.ningmuyun.com/api/government/positions` | `^~ /api/government/` | `/api/government/positions` | ✅ 正确 |
|
|||
|
|
| `/api/government/farmers` | `https://ad.ningmuyun.com/api/government/farmers` | `^~ /api/government/` | `/api/government/farmers` | ✅ 正确 |
|
|||
|
|
|
|||
|
|
## 验证步骤
|
|||
|
|
|
|||
|
|
1. **重新构建前端项目**:
|
|||
|
|
```bash
|
|||
|
|
cd government-admin
|
|||
|
|
npm run build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **部署到生产环境**:
|
|||
|
|
- 将构建后的文件部署到服务器
|
|||
|
|
- 确保nginx配置正确
|
|||
|
|
|
|||
|
|
3. **测试API接口**:
|
|||
|
|
```bash
|
|||
|
|
# 测试岗位接口
|
|||
|
|
curl https://ad.ningmuyun.com/api/government/positions
|
|||
|
|
|
|||
|
|
# 测试部门接口
|
|||
|
|
curl https://ad.ningmuyun.com/api/government/departments
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文件
|
|||
|
|
- `government-admin/src/utils/api.js` - 前端API配置文件
|
|||
|
|
- `government-backend/_etc_nginx_conf.d_ningmuyun_one.conf` - nginx配置文件
|
|||
|
|
|
|||
|
|
## 修复时间
|
|||
|
|
2024年12月19日
|
|||
|
|
|
|||
|
|
## 修复状态
|
|||
|
|
✅ 已修复 - 前端API配置已更新,添加了正确的 `/api` 前缀
|