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)
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具