UNPKG

press-next

Version:

Vue3 组件库,支持 Composition API

56 lines (48 loc) 1.47 kB
import { BaseRequest } from '../base/base-request'; import { axios } from './axios'; import type { IBaseRequestOptions, IBaseRequestParam } from '../types'; /** * web端Post请求发送类,基于axios */ export class WebRequest extends BaseRequest { private readonly axios: any; constructor(options: IBaseRequestOptions) { super(options); const config = { withCredentials: options?.extra?.withCredentials !== false, // 跨域送cookie transformResponse: [this.transformJson], }; this.axios = axios.create(config); } doSend(param: IBaseRequestParam): Promise<any> { return this.axios({ method: param.method ? param.method : 'post', headers: param.headers ? param.headers : {}, url: param.url, data: param.reqData, params: param.method === 'get' && param.reqData ? param.reqData : {}, // 支持透传axios参数 ...param.extra?.axiosParam, }); } /** * 字符串转化为json对象 * @param data */ transformJson(data: any) { if (typeof data === 'string') { try { // eslint-disable-next-line no-new-func data = (new Function('', `return ${data}`))(); // 高效解析,比eval安全些 } catch (e) { console.log(e); try { data = JSON.parse(data); // 失败时(极少数情况),再尝试常规解析 } catch (e) { console.log(e); } } } return data; } }