---
name: jjb-http-interceptor-config
description: 定义 JJB 项目 HTTP 拦截器配置规范。在配置 window.jjbCommonGlobalConfig.httpInterceptor、请求/响应拦截或添加 Token/租户ID 时使用。
---
# 应用配置与开发环境
## HTTP 拦截器配置
- **配置位置**:在 `public/index.html` 文件中配置 `window.jjbCommonGlobalConfig.httpInterceptor`
- **配置结构**:
```html
```
- **请求拦截器说明**:
- **函数签名**:`request(url: string, method: string, data?: object, headers?: object | false): Promise<[string, string, object, object | false]>`
- **参数说明**:
| 参数 | 类型 | 说明 |
| :--- | :--- | :--- |
| url | string | 请求URL地址 |
| method | string | 请求方法(如 'get'、'post'、'put'、'delete'、'patch') |
| data | object | 请求数据(可选,默认为 `{}`) |
| headers | object \| false | 请求头对象(可选,默认为 `false`,如果为 `false` 则使用默认请求头) |
- **返回值**:**必须返回 Promise**,Promise resolve 的值必须为包含四个元素的数组:`[url, method, data, headers]`
- 数组元素顺序固定:`[URL地址, 请求方法, 请求数据, 请求头]`
- 返回的数组会作为参数传递给实际的请求函数执行
- **执行时机**:在请求发送前执行,可以修改请求的 URL、方法、数据和请求头
- **使用示例**:
```javascript
request: (url, method, data, headers) => {
// 确保 headers 是对象
const reqHeaders = headers || {};
// 添加 Token
if (!reqHeaders.token && sessionStorage.getItem('token')) {
reqHeaders.token = sessionStorage.getItem('token');
}
// 添加租户ID
reqHeaders.tenantId = sessionStorage.getItem('tenantId');
// 修改请求数据
const reqData = {
...data,
timestamp: Date.now()
};
return Promise.resolve([url, method, reqData, reqHeaders]);
}
```
- **使用场景**:适用于需要在请求发送前统一处理请求参数、添加请求头(如租户ID、Token等)、修改请求URL、添加时间戳等场景
- **响应拦截器说明**:
- **函数签名**:`response(res: object): Promise