入口
{
...
main: 'index.js',
...
}
module.exports = require('./lib/axios')
axios
var utils = require('./utils')
var bind = require('./helpers/bind')
var Axios = require('./core/Axios')
var mergeConfig = require('./core/mergeConfig')
var defaults = require('./defaults')
var axios = createInstance(defaults)
axios.Axios = Axios
axios.create = function create(instanceConfig){
return createInstance(mergeConfig(axios.defaults,instanceConfig))
}
axios.Cancel = require('./cancel/Cancel')
axios.CancelToken = require('./cancel/CancelToken')
axios.isCancel = require('./cancel/isCancel')
axios.all = function all(promises){
return Promise.all(promises)
}
axios.spread = require('./helpers/spread')
axios.isAxiosError = require('./helpers/isAxiosError')
module.exports = axios
module.exports.default = axios
createInstance
function createInstance(defaultConfig){
var context = new Axios(defaultConfig)
var instance = bind(Axios.prototype.request,context)
utils.extend(instance,Axios.prototype,context)
utils.extend(instance,context)
return instance
}
bind
function bind(fn,thisArg){
return function wrap(){
var args = new Array(arguments.length)
for(var i = 0; i < args.length; i ++){
args[i] = arguments[i]
}
return fn.apply(thisArg,args)
}
}
util.extend
function extend(a,b,thisArg){
forEach(b,function assignValue(val,key) {
if(thisArg && typeof val === 'function'){
a[key] = bind(val,thisArg)
}else{
a[key] = val
}
})
return a
}
defaults
var DEFAULT_CONTENT_TYPE = {'Content-Type':'application/x-www-form-urlencoded'}
var defaults = {
transitional:{
silentJSONParsing:true,
forcedJSONParsing:true,
clarifyTimeoutError:false,
},
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) || (header && headers['Content-Type'] === 'application/json')){
SetContentTypeIfUnset(headers,'applicaion/json')
return JSON.stringify(data)
}
return data
}],
transformResponse:[function transformResponse(data){
const transitional = this.transitional
var slientJSONParsing = transitional && transitional.silentJSONParsing
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',
xsrfHeaderName:'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus:function validateStatus(status){
return status >= 200 && status < 300
}
}
defaults.headers = {
common:{'Accept':'application/json,text/plain,*/*'}
}
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)
})
getDefaultAdapter
function getDefaultAdapter(){
var adapter
if(typeof XMLHttpRequest !== 'undefined'){
adapter = require('./adapter/xhr')
}else if(typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]'){
adapter = require('./adapter/http')
}
return adapter
}
setContentTypeIfUnset
function setContentTypeIfUnset(headers,value){
if(!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])){
headers['Content-Type'] = value
}
}
normalizeHeaderName
function normalizeHeaderName(headers,normalizedName){
utils.forEach(headers,function processHeader(value,name){
if(name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()){
headers[normlizedName] = value
delete headers[name]
}
})
}
merge
function merge(){
var result = {}
function assignValue(val,key){
if(isPlainObject(result[key]) && isPlainObject(val)){
result[key] = merge(result[key],val)
}else if(isPlainObject(val)){
result[key] = merge({},val)
}else if(isArray(val)){
result[key] = val.slice()
}else{
result[key] = val
}
}
for(var i = 0,l = arguments.length;i < l;i ++){
forEach(arguments[i],assignValue)
}
}
enhanceError
function enhanceError(error,config,code,request,response){
error.config = config
if(code){
error.code = code
}
error.request = request
error.response = response
error.isAxiosError = true
error.toJSON = function toJSON(){
return {
message: this.message,
name:this.name,
description: this.description,
number: this.number,
fileName: this.fileName,
lineNumber: this.lineNumber,
columnNumber: this.columnNumber,
stack:this.stack,
config: this.config,
code:this.code,
}
}
return error
}