UNPKG

react-app-shell

Version:

react打包脚本和example, 这里的版本请忽略

125 lines (113 loc) 2.84 kB
import RequestUtils, { IAnyValueObject, IRequestConfig, IRequestGlobalConfig } from '@mmears/request'; import logHelper from '@mmears/log'; import { localStore } from '@/utils/index'; /** * 请求配置选项 */ export interface IRequestConfigV2 extends IRequestConfig { /** * 是否携带token */ includeToken?: boolean; } /** * 日志对象 */ const logger = logHelper({ eventName: 'web_log', showLog: false, // process.env.NODE_ENV === 'development' getAccount: () => { return localStore.getUserId() || ''; } }); /** * 请求工具 的 配置对象 */ const config: IRequestGlobalConfig = { /** * 接口响应成功的编码, 默认是 'OK' */ successCode: 'OK', /** * 是否携带cookie */ withCredentials: true, logger, // trackInOut: true, // 是否跟踪接口的输入输出 perfRule: 'all', // 接口性能 记录日志的规则 /** * 处理自定义请求头 */ headersHandle: () => { const headers = { 'X-USER-TOKEN': localStore.getToken() // 登录会话token }; // 为了同步 小程序与H5的登录状态, 如果本地有wxToken, 则必须携带 const wechatToken = localStore.getWechatToken(); if (wechatToken) { // @ts-ignore headers['X-WECHAT-TOKEN'] = wechatToken; } // operateType 大转盘活动的参数, 用来判断 新注册 or 老用户, 很奇怪的东西, 但是已经上线了 const operateType = localStore.get('operateType'); if (operateType) { // @ts-ignore headers['operateType'] = operateType; } return headers; } }; /** * 请求实例 */ const request = new RequestUtils(config); /** * 转换请求配置 为 标准配置 * @param config */ const convertConfig = (config?: IRequestConfigV2): IRequestConfigV2 | undefined => { // 如果不需要携带token, 则重置 X-USER-TOKEN if (config && config.includeToken === false) { config.headers = config.headers || {}; config.headers['X-USER-TOKEN'] = ''; } return config; }; /** * 异步获取或提交数据的方法 * @returns {*} */ const fetchUtils = { /** * 获取数据 * @param url url * @param params queryString 参数 * @param config 选项 */ get(url: string, params?: IAnyValueObject, config?: IRequestConfigV2) { return request.get(url, params, convertConfig(config)); }, /** * 提交数据 * @param url * @param data * @param config */ post(url: string, data?: any, config?: IRequestConfigV2) { return request.post(url, data, convertConfig(config)); }, /** * 提交数据 * @param url * @param data * @returns {Promise<any>} */ postJson(url: string, data?: any, config?: IRequestConfigV2) { return request.postJson(url, data, convertConfig(config)); } }; export default fetchUtils;