关键代码
var defaults = {
// 适配器
adapter: getDefaultAdapter(),
// 请求数据转换函数
transformRequest: [function transformRequest(data, headers) {
normalizeHeaderName(headers, 'Accept');
normalizeHeaderName(headers, 'Content-Type');
if (utils.isFormData(data) ||
utils.isArrayBuffer(data) ||
utils.isBuffer(data) ||
utils.isStream(data) ||
utils.isFile(data) ||
utils.isBlob(data)
) {
return data;
}
if (utils.isArrayBufferView(data)) {
return data.buffer;
}
if (utils.isURLSearchParams(data)) {
setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
return data.toString();
}
if (utils.isObject(data)) {
setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
return JSON.stringify(data);
}
return data;
}],
// 响应数据转换函数
transformResponse: [function transformResponse(data) {
/*eslint no-param-reassign:0*/
if (typeof data === 'string') {
try {
data = JSON.parse(data);
} catch (e) { /* Ignore */
}
}
return data;
}],
/**
* 超时时间设置
*/
timeout: 0,
//防止攻击的检测字符串
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
//请求为成功的条件
validateStatus: function validateStatus(status) {
return status >= 200 && status < 300;
}
};
总结:
-
请求转换器: 对请求头和请求体数据进行特定处理的函数;
-
响应转换器: 将响应体 json 字符串解析为 js 对象或数组的函数;
axios 的请求、响应拦截器
上一篇