目录
Axios介绍与原生的差异
发送常见的请求和配置选项
1、发送request请求
baseURL :
2、发送get请求
3、发送post请求
axios.all
Axios创建新的实例
请求和响应拦截
请求拦截
响应拦截
Axios介绍与原生的差异
Axios其实就是一个网络请求库
与原生的差异:
- 原生的网络请求需要自己封装
- 原生某些功能不具备,需要自己完成,例如请求拦截,响应拦截
- JS可以运行在浏览器和Node中,但是使用原生的某些方法无法运行在Node,例如fetch
发送常见的请求和配置选项
1、发送request请求
axios.request({配置}).then(res=>{回调})
axios.request({
url:'http://123.207.32.32:8000/home/multidata',
method:'get'
}).then(res=>{
console.log(res);
})
常见的配置选项:
baseURL :
当我有多个网络请求都是在一个根url下时,可以使用baseURL,可以省略写跟url:
const baseURL = 'http://123.207.32.32:8000'
axios.defaults.baseURL = baseURL
axios.request({
url:'/home/multidata',
method:'get'
}).then(res=>{
console.log(res);
})
2、发送get请求
这里的params指的是配置,可以理解为在运行时会加到url后面
axios.get('http://123.207.32.32:9001/lyric',{
params:{
id:500665346
}
}).then(res=>{
console.log(res);
})
3、发送post请求
可以发送一些数据
axios.post('http://123.207.32.32:1888/02_param/postjson',{
data:{
name:'lee',
password:123456
}
}).then(res=>{
console.log(res);
})
axios.all
可以一次性发送多个网络请求,当全部完成后才会回调
axios.all([
axios.get(),
axios.get()
]).then()
Axios创建新的实例
axios除了可以直接用上面那种的默认实例对象,也可以自己创建
为什么要创建axios实例?
当我们从axios模块中导入对象时,使用的实例是默认的实例;当给该实例设置一些默认配置时,这些配置就被固定下来了.但是后续开发中,某些配置可能会不太一样;
比如某些请求需要使用特定的baseURL或者timeout等.
这个时候,我们就可以创建新的实例,并且传入属于该实例的配置信息.
const instance = axios.create({
baseURL:'http://123.207.32.32:8000',
timeout:1000,
headers:{}
})
那么不同的实例就可以设置不同的配置信息
请求和响应拦截
请求拦截
在发送请求的过程中进行拦截
axios.interceptors.request.use((config)=>{
console.log('请求成功');
},(err)=>{
console.log('请求失败');
})
响应拦截
在得到数据的过程中拦截
axios.interceptors.response.use((res)=>{
return res.data
},(err)=>{
return err
})