import axios from 'axios'import {reverseMerge} from "./index";export const config = {baseURL: '/api',tokenKey: 'X-Token',token: 'apijson-builder'}export const setToken = function (token) {config.token = token}const request = axios.create({baseURL: config.baseURL})/*** @param res*/function extractResponse(res = {}) {let data = {};// eslint-disable-next-line no-prototype-builtinsconst multi = res.hasOwnProperty('[]');if (multi) {const formatEntities = function (data) {data['[]'].forEach(item => {Object.keys(item).forEach(table => {// eslint-disable-next-line no-prototype-builtinsif (!data.hasOwnProperty(table)) {data[table] = [];}data[table].push(item[table])})})delete data['[]']}const isAssociatedResult = function (data) { // 认为, 当集合(key为'[]')中存在多个实体对象时,当作关联结果集处理.TODO 应当有更可靠的判断方式const arr = data['[]']if (arr.length > 0) {return Object.keys(arr[0]).length > 1}return false;}if (!isAssociatedResult(res)) { // 非关联的响应结果, 则无需格式化(保证了关联关系)reverseMerge(data, res)formatEntities(data)} else {data = res;}} else {data = res;}return data;}request.interceptors.request.use(config => {if (config.token) {config.headers[config.tokenKey] = config.token}return config},err => {console.error("err:", err);return Promise.reject(err)})request.interceptors.response.use(response => {const res = response.dataconst {code} = res;if (code !== 200) {return Promise.reject(new Error(res))}return Promise.resolve(extractResponse(res));},err => {console.error("err:", err);return Promise.reject(err)})export default request;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。