我们看到axios的官方文档中有创建axios实例去发送请求的方式。
const instance = axios.create({
baseURL: 'https://some-domain.com/api/'
});
其实我们在请求中经常没有用这种创建实例的方式,而是直接:
const axios = require('axios');
axios.get('/user?ID=12345').then(()=>{})
或者
axios({
method: 'get',
url: 'http://test.com',
})
.then(()=>{})
其实以上3种方法都是正确的使用axios请求数据的方法。
那什么时候会用到axios.create()创建实例?
这里有一个误区,其实并不是使用了axios.create()才创建了一个实例(单例),而是上面3种方法都创建了实例。
axios.create()的优势是可以创建一个又一个的实例。
axios.create()使用场景:
1)在请求不同服务器时,服务器的配置完全不同;比如headers里面放的东西完全不同;
2)在处理请求拦截时处理内容完全不同,比如你可以在实例A的请求拦截里面设置Loading转圈,而在另一个实例B中不使用loading转圈。
3)在处理相应拦截时处理内容完全不同,比如两个不同的axios实例请求了两个完全不同的服务器,而这两个服务器返回数据的code规则完全不同,这就要在各自的拦截器中分别处理了。