File was renamed from _cursor.ai/201-请求层基类Fetcher.md |
| | |
| | | # 请求层基类 Fetcher.js |
| | | --- |
| | | description: 数据控制器基类,所有数据控制器都必须继承此类 |
| | | globs: |
| | | alwaysApply: false |
| | | --- |
| | | |
| | | - [请求层基类 Fetcher.js](#请求层基类-fetcherjs) |
| | | - [功能说明](#功能说明) |
| | | - [引用方法](#引用方法) |
| | | - [构造函数](#构造函数) |
| | | - [主要方法](#主要方法) |
| | | - [`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) |
| | | - [请求的 options 配置](#请求的-options-配置) |
| | | - [`hostType` 主机类型](#hosttype-主机类型) |
| | | - [`silence` 静音请求](#silence-静音请求) |
| | | - [响应处理](#响应处理) |
| | | - [处理流程](#处理流程) |
| | | - [前端统一响应数据格式](#前端统一响应数据格式) |
| | | - [前端统一响应状态码](#前端统一响应状态码) |
| | | - [请求调用](#请求调用) |
| | | # 请求层基类 Fetcher.js |
| | | |
| | | ## 功能说明 |
| | | |
| | |
| | | ## 引用方法 |
| | | |
| | | ```js |
| | | import { |
| | | Fetcher |
| | | } from '@components/bases/Fetcher'; |
| | | import { Fetcher } from '@components/bases/Fetcher'; |
| | | ``` |
| | | |
| | | ## 构造函数 |
| | | |
| | | 构造函数接受一个配置对象 options 作为参数,包含如下属性: |
| | | * **urlPrefix** 数组,包含两项,第一项为本地 Mock 的 URL 前缀,第二项为服务器接口的前缀 |
| | | 构造函数接受一个配置对象作为参数,包含如下属性: |
| | | |
| | | - **urlPrefix** 数组,包含两项,第一项为本地 Mock 的 URL 前缀,第二项为服务器接口的前缀 |
| | | |
| | | ```js |
| | | class FCommon extends Fetcher { |
| | |
| | | - `type` (String):请求类型(如 `'get'`、`'post'`) |
| | | - `url` (String):请求的 URL 地址 |
| | | - `data` (Object,可选):请求参数 |
| | | - `options` (Object,可选):请求配置 |
| | | - `options` (Object,可选):请求配置(参照下文) |
| | | |
| | | **返回值** |
| | | - (Promise):返回请求结果的 Promise |
| | |
| | | **注意事项** |
| | | - 支持嵌套对象的递归转换 |
| | | |
| | | ## 请求的 options 配置 |
| | | ## 请求 query 的 options 配置 |
| | | |
| | | ### `hostType` 主机类型 |
| | | |
| | |
| | | } |
| | | ``` |
| | | |
| | | 注意,为了保证接口数据的扩展性,data 只能接 Object 类型,禁止接其他类型 |
| | | 注意,为了保证接口数据的扩展性,**data 只能接 Object 类型**,禁止接其他类型 |
| | | |
| | | ### 前端统一响应状态码 |
| | | |
| | |
| | | ```js |
| | | import { Fetcher } from '@components/bases/Fetcher'; |
| | | |
| | | class FCommon extends Fetcher {} |
| | | // 请求集 |
| | | class FCommon extends Fetcher { |
| | | |
| | | getUserInfo(user) { |
| | | const url = this.spellURL('getUserInfo', 'User/info'); |
| | | const send = {..user}; |
| | | return this.post(url, send); |
| | | } |
| | | |
| | | } |
| | | |
| | | // 全局单例 |
| | | export const $fetchCommon = new FCommon(); |
| | | ``` |
| | | |
| | | ```js |
| | | import { |
| | | $fetchCommon |
| | | } from '@fetchers/FCommon'; |
| | | import { $fetchCommon } from '@fetchers/FCommon'; |
| | | |
| | | export class PPageName extends Pilot { |
| | | // 数据控制器 |
| | | export class PUserDetail extends Pilot { |
| | | |
| | | // 在数据控制层中,发请求示例 |
| | | onLoadUserInfo() { |
| | | Taro.showLoading(); |
| | | $fetchCommon.getUserInfo(this.userId) |
| | | // 调用请求集发请求示例 |
| | | $fetchCommon.getUserInfo({uid: this.userId}) |
| | | .then(res => { |
| | | Taro.hideLoading(); |
| | | if (!res) { |
| | |
| | | |
| | | } |
| | | ``` |
| | | |
| | | |