From a993b23697d0aa04bccb48a870bebd3df35431c2 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Fri, 07 Mar 2025 12:26:55 +0800 Subject: [PATCH] 知识库,改写请求基类主要方法列表,放弃代码注释的表达方式,改用表格模式 --- @framework/201-请求层基类Fetcher.md | 271 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 218 insertions(+), 53 deletions(-) diff --git "a/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" "b/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" index 82cee2e..8415c1d 100644 --- "a/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" +++ "b/@framework/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.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 时,如果请求失败,不显示提示 + + + ## 响应处理 ### 处理流程 -- Gitblit v1.9.1