45 lines
1.4 KiB
Markdown
45 lines
1.4 KiB
Markdown
# 网络请求封装
|
||
|
||
基于 `axios-miniprogram` 的网络请求封装,位于 `miniprogram/utils/request.ts`。
|
||
|
||
## 主要特性
|
||
|
||
- 自动添加 Authorization 请求头(支持白名单配置)
|
||
- 统一的响应格式处理(标准格式:`{ code, data, message }`)
|
||
- 智能加载动画管理(支持并发请求计数)
|
||
- 401 未授权自动跳转登录页
|
||
- 完整的 TypeScript 类型支持
|
||
- 文件上传功能封装
|
||
|
||
## 使用示例
|
||
|
||
```typescript
|
||
import request from '../utils/request'
|
||
|
||
// GET 请求
|
||
const data = await request.get('/api/user/info')
|
||
|
||
// POST 请求
|
||
const result = await request.post('/api/user/update', { name: '张三' })
|
||
|
||
// 禁用加载动画
|
||
const data = await request.get('/api/user/info', { loading: false })
|
||
|
||
// 文件上传
|
||
import { upload } from '../utils/request'
|
||
const result = await upload({
|
||
apiUrl: '/api/upload',
|
||
filePath: 'tempFilePath',
|
||
name: 'file',
|
||
formData: { userId: 123 },
|
||
})
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **API 地址配置**: 请在 `request.ts` 中配置正确的 `baseURL`
|
||
2. **Token 管理**: Token 存储在 `app.globalData.token` 中,登录成功后需要手动设置
|
||
3. **请求白名单**: 不需要认证的接口需要在 `request.ts` 的 `requestWhiteList` 数组中配置
|
||
4. 响应拦截器在 `code === 200` 时自动解包返回 `result.data`,调用方直接拿到业务数据
|
||
5. 并发请求的 loading 动画通过计数器管理,避免闪烁
|