1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// 定义默认数据传输格式 var DEFAULT_CONTENT_TYPE = {'Content-Type':'application/x-www-form-urlencoded'} // 默认axios配置 var defaults = { transitional:{ silentJSONParsing:true, // 忽略JSON.parse(response.body)的错误 forcedJSONParsing:true, // 当responseType!== json时将response转化为json clarifyTimeoutError:false, // 当请求超时返回ETIMEDOUT而不是ECONNABORTED }, adapter:getDefaultAdapter(), // 自定义请求 // 在request到达server前自定义请求发送的数据 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) || (header && headers['Content-Type'] === 'application/json')){ SetContentTypeIfUnset(headers,'applicaion/json') return JSON.stringify(data) } return data }], // .then/catch前处理response transformResponse:[function transformResponse(data){ const transitional = this.transitional // 是否忽略JSON.Parse的错误 var slientJSONParsing = transitional && transitional.silentJSONParsing // 是否强制将res转化为json var forcedJSONParsing = transitional && transitional.forcedJSONParsing var strictJSONParsing = !silentJSONParsing && this.responseType === 'json' if(strictJSONParsing || (forcedJSONParsing && utils.istring(data) && data.length)){ try{ return JSON.parse(data) }catch(e){ if(strictJSONParsing){ if(e.name === 'SyntaxError'){ throw enhanceError(e,this,'E_JSON_PARSE') } throw e } } } return data }], timeout: 0, // 请求超市时间 xsrfCookieName:'XSRF-TOKEN', // 用来校验xsrf请求的cookieName xsrfHeaderName:'X-XSRF-TOKEN', // 用来校验xsrf请求的headerName maxContentLength: -1, // 响应体的最大字符 maxBodyLength: -1, // 请求体的最大字符 validateStatus:function validateStatus(status){ return status >= 200 && status < 300 // 校验请求成功状态 } } defaults.headers = { common:{'Accept':'application/json,text/plain,*/*'} } // 设置get/delete/head/post/put/patch默认的header头的Content-Type utils.forEach(['delete','get','head'],function forEachMethodNoData(method){ defaults.headers[method] = {} }) utils.forEach(['post','put','patch'],function forEachMethodWithData(method){ defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE) })
|