2017-09-01 28 views
1

我想創建2個axios客戶端,但他們似乎是共享標題。我的代碼如下:axios.create是共享默認值,是否正常?

var client1 = axios.create(); 
var client2 = axios.create(); 

client2.defaults.headers.common['Authorization'] = 123; 

console.log(client1.defaults.headers.common); 
console.log(client2.defaults.headers.common); 

且都有Authorization頭設置爲123

https://jsfiddle.net/yebqu22d/

我做得不對,或者這是預期的行爲?

回答

0

這應該是預期的。正是defaults的意思。

更新:

在我看來,client1.defaultsclient2.defaults甚至axios.defaults指向同一個參考。無論你改變了哪一個,它都會將價值分享給其他人。

但是可以通過create爲每個實例指定配置。檢查下面:

var client1 = axios.create({ 
     headers: { 
     common: { 
      Authorization: 123 
     } 
     } 
}); 
var client2 = axios.create(); 

//client2.defaults.headers.common['Authorization'] = 123; 

console.log(client1.defaults.headers.common); 
console.log(client2.defaults.headers.common); 
+0

什麼是創建方法,然後點?我試圖獲得2個不同的axios客戶端實例,那不是它的作用?我在'client2'上設置了默認值,而不是'axios',而不是'client1'。 – prgrmnerd

+0

感謝您的更新。我的問題是,我需要在收到答覆後在未來設置標題。我想當時我只需要重新創建客戶端。 – prgrmnerd

+0

也許你會嘗試'client2.headers = {Authorization:123}'而不是'client2.defaults.headers.common ['Authorization'] = 123;' – Howard