Axios Config Defaults

Config Defaults

您可以指定将应用于每个请求的配置默认值。

全局Axios默认值(GLOBAL)

axios.defaults.baseURL = 'https://api.example.com';

// 重要的: 如果axios与多个域一起使用,AUTH_TOKEN将被发送到所有域。
// 参见下面使用自定义实例默认值的示例。
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

实例Axios默认值(DEFAULTS)

// 在创建实例时设置配置默认值          
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// Alter defaults after instance has been created
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

配置优先顺序(CONFIG)

const instance = axios.create();	// 使用的是全局默认配置(global)
instance.defaults.timeout = 2500;	// 修改默认配置 defaults
instance.get('/longRequest', {		// 使用前配置 config
  timeout: 5000
});

配置将按优先顺序合并。顺序是实例的lib/defaults.js,中的库默认值,然后是实例的defaults属性,最后是请求的config参数。后者将优先于前者。这里有一个例子。顺序一般都是以:粒度来决定的,如:对详细的设置会覆盖掉全局上的设置。(详细配置 > defaults > 全局)

/*
    global defaults config
        - 粒度: global > defaults > config
        - 优先级:global < defaults < config

        一般情况下,配置粒度越细的优先级越高。
*/

const ball = document.querySelectorAll("button")
axios.defaults.baseURL = "https://www.google.com";  // global 

const case1 = ball[0].onclick = () => {
    const instance = axios.create({
        baseURL: "https://github.com/axios",    // dafaults
    })
    instance.get("/case", { baseURL: "https://www.example.com" }).then(     
        (response) => console.log(response)
    ).catch((error) => console.log(error))    // config    
}

//result baseURL: "https://www.example.com"
posted @ 2022-11-16 18:42  Redskaber  阅读(91)  评论(0)    收藏  举报