axios為什么創建實例?為什么創建不同實例


axios創建實例作用是啥 可以不用嗎?

默認會導出實例axios,通常只需使用這個axios就可以了。
但是有時候你需要創建多個實例,比如你需要訪問多個服務地址,而這些服務請求和響應的結構都完全不同,那么你可以通過axios.create創建不同的實例來處理。
比如axios1是用http狀態碼確定響應是否正常,而axios2是服務器自己定義的狀態碼,又或者他們請求頭不同,支持的content-type不同,那么我可以單獨為axios1和axios2寫攔截器。

axios為什么創建實例?

原因是當我們axios模塊中導入對象時,使用的是默認的實例,當給這些實例設置默認配置時這些配置就被固定下來了,但后續開發中某些配置或許會不一樣,如timeout,content-Type、Authorization、token等,這時我們就可以創建新的實例,並傳入屬於該實例的配置信息:

axios實例的配置

## axios實例的配置
//常用的基本配置
    axios.create({
        baseURL:'http://localhost:8080', //請求的域名,基本地址
        timeout:5000,  //請求的超時時長,單位毫秒
        url:'/data.json',  //請求的路徑
        method:'get,post,put,patch,delete' , //請求方法
        headers:{
            token:''  //比如token登錄鑒權,請求的時候攜帶token,讓后端識別登錄人的信息
        },   //請求頭
        params:{},  //請求參數拼接在URL上
        data:{},    //請求參數放在請求體里

    })

哪里可以配置axios呢?

  • axios全局配置
## //axios.defaults.后邊跟的就是axios的那些配置
//一般修改的全局配置,也就下邊這兩個
axios.defaults.timeout = 1000 
axios.defaults.baseURL = 'http://localhost:8080'
  • axios實例配置
//如果create()里不添加參數的話,在創建這個axios實例的時候,使用的就是全局的配置
// 這個時候instance的timeout是1000
const instance = axios.create(); 

//如果設置了全局的配置,但是又想在創建的實例里修改配置怎么辦
instance.default.timeout = 3000
  • axios請求配置
  let instance = axios.create();
    instance.get('/data.json',{
        timeout:5000
    })

具體的使用

在實際開發項目中,全局配置的局限性比較大,一般我們會全局配置兩個參數:
**axios.defaults.timeout**和**axios.defaults.baseURL**
假如我們有兩個請求接口,那么我們一般的做法是創建兩個axios實例

const instance1 = axios.create({
      baseurl:'http://localhost:8080',
      timeout:'1000'
})

const instance2 = axios.create({
      baseurl:'http://localhost:9090',
      timeout:'3000'
})

//instance1這里用到的參數有 baseurl,timeout,method,url
instance1.get('/userinfo').then(res=>{
  console.log(res)
})

//instance2這里用到的參數有 baseurl,timeout,method,url,params,並且對timeout進行了修改
instance1.get('/orderlist',{
    timeout:'5000'
    params:{}
}).then(res=>{
  console.log(res)
})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM