WebApp【公共组件库】@前端(For Git Submodule)
知识库,改写请求基类主要方法列表,放弃代码注释的表达方式,改用表格模式
1 files modified
271 ■■■■ changed files
@framework/201-请求层基类Fetcher.md 271 ●●●● patch | view | raw | blame | history
@framework/201-请求层基类Fetcher.md
@@ -5,6 +5,17 @@
  - [引用方法](#引用方法)
  - [构造函数](#构造函数)
  - [主要方法](#主要方法)
    - [`spellURL(devSuffix, serSuffix)`](#spellurldevsuffix-sersuffix)
    - [`get(url, data, options)`](#geturl-data-options)
    - [`post(url, data, options)`](#posturl-data-options)
    - [`query(type, url, data, options)`](#querytype-url-data-options)
    - [`stringToCamel(str)`](#stringtocamelstr)
    - [`stringToUnderline(str)`](#stringtounderlinestr)
    - [`transKeyName(type, json)`](#transkeynametype-json)
    - [`transImgPath(type, path)`](#transimgpathtype-path)
  - [请求的 options 配置](#请求的-options-配置)
    - [`hostType` 主机类型](#hosttype-主机类型)
    - [`silence` 静音请求](#silence-静音请求)
  - [响应处理](#响应处理)
    - [处理流程](#处理流程)
    - [前端统一响应数据格式](#前端统一响应数据格式)
@@ -43,77 +54,231 @@
## 主要方法
```js
/**
 * 拼写 URL 地址
 * @param {String} devSuffix - 开发环境URL后缀
 * @param {String} serSuffix - 服务器环境URL后缀
 * @return {String} 拼接后的 URL 地址(不含域名)
 */
spellURL(devSuffix, serSuffix) {}
/**
 * 发送 POST 请求,query 的简写
 * @param {String} url - 请求的 URL
 * @param {*} data - 请求参数
 * @param {Object} [options] - 请求选项
 * @return {Promise<any>} 返回一个 Promise 对象,解析为响应数据
 */
post(url, data, options = {}) {}
### `spellURL(devSuffix, serSuffix)`
/**
 * 基础 AJAX 请求
 * @param {String} type - 请求类型(GET 或 POST)。
 * @param {String} url - 请求的 URL。
 * @param {*} [data] - 请求参数。
 * @param {Object} [options] - 请求选项。
 * @return {Promise<any>} 返回一个 Promise 对象,解析为响应数据。
 */
query(type, url, data = null, options = {}) {}
**功能**
根据开发环境和生产环境拼接 URL 地址。
/**
 * 下划线字符串转小驼峰
 * @param {String} str - 下划线字符串
 * @return {String} 转换后的驼峰字符串
 */
stringToCamel(str) {}
**参数**
| 参数名    | 类型   | 说明                      |
| --------- | ------ | ------------------------- |
| devSuffix | String | 开发环境 URL 后缀         |
| serSuffix | String | 生产环境 URL 后缀(可选) |
/**
 * 小驼峰字符串转下划线
 * @param {String} str - 小驼峰字符串
 * @return {String} 转换后的下划线字符串
 */
stringToUnderline(str) {}
**返回值**
| 类型   | 说明                              |
| ------ | --------------------------------- |
| String | 拼接后的完整 URL 地址(不含域名) |
/**
 * 驼峰与下划线命名模式转换
 * @param {String} type - 'camel' 或 'underline'
 * @param {Object} json - JSON 对象
 * @return {Object} 转换后的 JSON 对象
 */
transKeyName(type, json) {}
**示例**
```javascript
class FCommon extends Fetcher {
    getUserInfo(id) {
        const url = this.spellURL('getUserInfo', 'user/user_info');
    }
}
```
说明:
* spellURL:拼接URL时,会根据是否处于本地开发场景,来选择不同的 URL 前缀
* query:如果在小程序中,会自动存取 cookies
**注意事项**
- 如果启用了 Mock 模式(比如本地开发时),URL 会指向本地的 JSON 文件。
- 支持处理路径中的 `../` 和多余的 `/`。
例如:
---
### `get(url, data, options)`
**功能**
发起 GET 请求。
**参数**
| 参数名  | 类型   | 说明             |
| ------- | ------ | ---------------- |
| url     | String | 请求的 URL 地址  |
| data    | Object | 请求参数         |
| options | Object | 请求配置(可选) |
**返回值**
| 类型    | 说明                   |
| ------- | ---------------------- |
| Promise | 返回请求结果的 Promise |
---
### `post(url, data, options)`
**功能**
发起 POST 请求,query 方法的简写
**参数**
| 参数名  | 类型   | 说明             |
| ------- | ------ | ---------------- |
| url     | String | 请求的 URL 地址  |
| data    | Object | 请求参数         |
| options | Object | 请求配置(可选) |
**返回值**
| 类型    | 说明                   |
| ------- | ---------------------- |
| Promise | 返回请求结果的 Promise |
**示例**
```js
class FCommon extends Fetcher {
    // 请求方法使用示例:获取用户基本信息(提供给数据控制层中调)
    getUserInfo(id) {
    getUserInfo() {
        const url = this.spellURL('getUserInfo', 'user/user_info');
        const send = {
            id
        };
        const send = {};
        return this.post(url, send);
    }
}
```
---
### `query(type, url, data, options)`
**功能**
发起基础 AJAX 请求
**参数**
| 参数名  | 类型   | 说明                             |
| ------- | ------ | -------------------------------- |
| type    | String | 请求类型(如 `'get'`、`'post'`) |
| url     | String | 请求的 URL 地址                  |
| data    | Object | 请求参数(可选)                 |
| options | Object | 请求配置(可选)                 |
**返回值**
| 类型    | 说明                   |
| ------- | ---------------------- |
| Promise | 返回请求结果的 Promise |
**注意事项**
- 小程序环境下会自动处理 Cookie,无需手动设置
---
### `stringToCamel(str)`
**功能**
将下划线命名的字符串转换为小驼峰命名
**参数**
| 参数名 | 类型   | 说明             |
| ------ | ------ | ---------------- |
| str    | String | 需要转换的字符串 |
**返回值**
| 类型   | 说明                 |
| ------ | -------------------- |
| String | 转换后的小驼峰字符串 |
---
### `stringToUnderline(str)`
**功能**
将小驼峰命名的字符串转换为下划线命名,如果没有大写字母,则返回原字符串
**参数**
| 参数名 | 类型   | 说明             |
| ------ | ------ | ---------------- |
| str    | String | 需要转换的字符串 |
**返回值**
| 类型   | 说明                 |
| ------ | -------------------- |
| String | 转换后的下划线字符串 |
---
### `transKeyName(type, json)`
**功能**
将 JSON 对象的键名在驼峰与下划线命名模式之间转换
**参数**
| 参数名 | 类型   | 说明                                 |
| ------ | ------ | ------------------------------------ |
| type   | String | 转换类型:`'camel'` 或 `'underline'` |
| json   | Object | 需要转换的 JSON 对象                 |
**返回值**
| 类型   | 说明               |
| ------ | ------------------ |
| Object | 转换后的 JSON 对象 |
**示例**
```js
class FCommon extends Fetcher {
    saveUserInfo() {
        const json = { 'user_name': 'John' };
        const result = this.transKeyName('camel', json); // 返回 { userName: 'John' }
    }
}
```
**注意事项**
- 支持嵌套对象的递归转换
---
### `transImgPath(type, path)`
**功能**
转换图片路径,支持修复补齐或裁剪多余部分
适用于处理旧版运营平台的图片路径,确保路径格式统一
**参数**
| 参数名 | 类型   | 说明                         |
| ------ | ------ | ---------------------------- |
| type   | String | 转换类型:`'fix'` 或 `'cut'` |
| path   | String | 需要转换的图片路径           |
**返回值**
| 类型   | 说明             |
| ------ | ---------------- |
| String | 转换后的图片路径 |
**示例**
```js
class FCommon extends Fetcher {
    saveUserInfo() {
        const path = '4/5e56307c489c7.jpg';
        const result = this.transImgPath('fix', path); // 返回 '/upload/4/5e56307c489c7.jpg'
    }
}
```
**注意事项**
- 支持多路径(逗号分隔)的批量转换,即先分别处理每一项后再(逗号)合并
## 请求的 options 配置
### `hostType` 主机类型
在混合 App 中,指定本次请求的主机类型(即域名)
- `base` 基础主机(预登陆用)
- `main` 默认主机,默认值,正常业务主机
  - 优先由 java 层在 webview 的 URL 上指定
  - 未指定时,按文件 project.config.json 的 host.buildHost 项值指定
### `silence` 静音请求
设为 true 时,如果请求失败,不显示提示
## 响应处理
### 处理流程