From d14f625a1b80ac06bd582d40cee566ec1c19b19c Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Mon, 03 Mar 2025 14:23:05 +0800 Subject: [PATCH] 知识库文档,请求层基类微调 --- _knowledges/201-请求层基类Fetcher.md | 60 +++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 37 insertions(+), 23 deletions(-) diff --git "a/_knowledges/201-\345\270\270\347\224\250\345\237\272\347\261\273.md" "b/_knowledges/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" similarity index 67% rename from "_knowledges/201-\345\270\270\347\224\250\345\237\272\347\261\273.md" rename to "_knowledges/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" index 3d0109e..ac75184 100644 --- "a/_knowledges/201-\345\270\270\347\224\250\345\237\272\347\261\273.md" +++ "b/_knowledges/201-\350\257\267\346\261\202\345\261\202\345\237\272\347\261\273Fetcher.md" @@ -1,10 +1,8 @@ -# 常用基类 +# 请求层基类 Fetcher.js -## 请求层基类 Fetcher.js +类 Fetcher 是一个用于处理 HTTP 请求的工具类,包含了多种方法来简化和统一请求的处理,请求层的每个请求集,都必须继承此类 -类 Fetcher 是一个用于处理 HTTP 请求的工具类,包含了多种方法来简化和统一请求的处理 - -### 引用方法 +## 引用方法 ```js import { @@ -12,21 +10,16 @@ } from '@components/bases/Fetcher'; ``` -### 构造函数 +## 构造函数 -构造函数接受一个配置对象 options 作为参数,包含如下属性 - -| 属性 | 类型 | 必填 | 描述 | 默认值 | -|---|---|---|---|---| -| urlPrefix | array | 是 | 请求URL的前缀 | ['/api/common/', '/api/common/'] | - -说明: -* urlPrefix数组包含两项,第一项为本地Mock的URL前缀,第二项为服务器接口的前缀,二者可以不一样 +构造函数接受一个配置对象 options 作为参数,包含如下属性: +* **urlPrefix** 数组,包含两项,第一项为本地 Mock 的 URL 前缀,第二项为服务器接口的前缀 ```js class FCommon extends Fetcher { - // 构造函数示例 + constructor() { + // 构造函数使用示例 super({ urlPrefix: ['/api/order/', '/mini/order/'], }); @@ -34,7 +27,7 @@ } ``` -### 主要方法 +## 主要方法 ```js /** @@ -88,18 +81,39 @@ ``` 说明: -* spellURL:拼接URL时,会根据是否处于 mock 模式来选择不同的 URL 前缀(本地开发自动使用 mock 模式) +* spellURL:拼接URL时,会根据是否处于本地开发场景,来选择不同的 URL 前缀 * query:如果在小程序中,会自动存取 cookies -### 响应处理 +例如: -#### 处理流程 +```js +class FCommon extends Fetcher { + + // 请求示例:获取用户基本信息(在数据控制层中调用) + getUserInfo(id) { + const url = this.spellURL('getUserInfo', 'user/user_info'); + const send = { + id + }; + return this.post(url, send); + } +} +``` + +## 响应处理 + +### 处理流程 1. query 方法调用 Taro.request 发送请求 -2. 收到响应后,先检测响应数据格式,发现其他类型的响应格式时,会自动转换为:前端统一响应数据格式 -3. 根据响应格式,如果成功,回传递响应内容进数据控制层,如果失败,直接失败提示 +2. 收到响应后,先检测响应数据格式,发现其他类型的响应格式时,会自动转换为:**前端统一响应数据格式** +3. 根据响应格式 + - 如果成功,将响应内容,回传给数据控制层 + - 如果失败,直接失败提示,回传空内容给数据控制层 +4. 将响应内容传给数据控制层之前,会进行如下处理 + - 将数据中的键名,转换为的驼峰 + - 将数据中的内容,如果是常规数字的字符串,转为数值 -#### 前端统一响应数据格式 +### 前端统一响应数据格式 格式如下: @@ -131,7 +145,7 @@ 注意,为了保证接口数据的扩展性,data 只能接 Object 类型,禁止接其他类型 -#### 前端统一响应状态码 +### 前端统一响应状态码 | 状态码 | 意义 | |---|---| -- Gitblit v1.9.1