# API 全局配置说明文档

## 概述

本项目实现了统一的API接口全局配置系统，用于管理所有API请求的基础URL、请求头、超时设置等配置参数。这样可以在一处修改配置，所有API请求都会自动应用这些配置。

## 配置文件结构

配置文件位于 `utils/config.js`，包含以下主要配置项：

- `baseURL`: API基础URL，所有相对路径的请求都会自动添加此前缀
- `clientId`: 客户端ID，用于API认证
- `grantType`: 授权类型
- `timeout`: 请求超时时间（毫秒）
- `headers`: 默认请求头
- 各模块API路径配置（login、book等）

## 请求工具

请求工具位于 `utils/request.js`，封装了uni.request方法，提供了以下功能：

- 自动添加baseURL
- 自动添加请求头（包括token）
- 统一的错误处理
- 请求超时控制
- 加载提示控制
- 响应拦截（401自动跳转登录页）

## API模块

API模块位于 `service/api.js`，按功能模块组织API请求，包括：

- `loginApi`: 登录相关API
- `bookApi`: 书籍相关API
- `userApi`: 用户相关API
- `warehouseApi`: 仓库相关API

## 使用示例

### 1. 导入API模块

```javascript
import { loginApi, bookApi } from '@/service/api.js';
```

### 2. 调用API方法

```javascript
// 登录
loginApi.wxLogin(loginData)
  .then(response => {
    console.log('登录成功', response);
  })
  .catch(error => {
    console.error('登录失败', error);
  });

// 获取书籍记录
async function getBooks(phoneNumber) {
  try {
    const response = await bookApi.getBookRecords(phoneNumber);
    return response.data;
  } catch (error) {
    console.error('获取失败', error);
    return [];
  }
}
```

### 3. 添加新的API

在 `service/api.js` 中添加新的API方法：

```javascript
export const newModuleApi = {
  getMethod: (params) => {
    return request({
      url: '/path/to/api',
      method: 'GET',
      data: params,
      loading: true // 是否显示加载提示
    });
  },
  postMethod: (data) => {
    return request({
      url: '/path/to/api',
      method: 'POST',
      data,
      loading: true
    });
  }
};
```

## 注意事项

1. 所有API请求都应该通过API模块进行，不要直接调用uni.request
2. 如需修改基础URL或其他全局配置，只需修改utils/config.js文件
3. 错误处理已在request.js中统一处理，业务代码中可以专注于正常流程
4. 对于特殊需求，可以在调用API时传入自定义header覆盖默认配置