cloud-admin-template
Version:
base on vue cloud-ui.vusion
37 lines (33 loc) • 1.09 kB
JavaScript
import axios from 'axios';
const formatContentType = function (contentType, data) {
const map = {
'application/x-www-form-urlencoded'(data) {
return JSON.stringify(data);
},
};
return map[contentType] ? map[contentType](data) : data;
};
const requester = function (requestInfo) {
const { url, config = {} } = requestInfo;
const { path, method, body = {}, headers = {}, query = {} } = url;
const baseURL = config.baseURL ? config.baseURL : '';
headers['Content-Type'] = headers['Content-Type'] || 'application/json';
let data;
const method2 = method.toUpperCase();
if (Object.keys(body).length || ['PUT', 'POST', 'PATCH'].includes(method2)) {
data = formatContentType(headers['Content-Type'], body);
}
const req = axios({
params: query,
baseURL,
method: method2,
url: path,
data,
headers,
withCredentials: !baseURL,
xsrfCookieName: 'csrfToken',
xsrfHeaderName: 'x-csrf-token',
});
return req;
};
export default requester;