动态Axios是一个常用的网络请求库,其通过封装浏览器内置对象XMLHttpRequest实现的。在使用Axios时,我们需要对其进行配置,以满足特定的请求需求,本文将对Axios的配置进行详细讲解。
配置步骤
- 安装Axios
在使用Axios之前,需要先安装该库,可以通过以下命令进行安装:
npm install axios
- 导入Axios
在进行Axios配置之前,需要先导入Axios,可以通过以下方式进行导入:
import axios from 'axios';
- 创建Axios的实例
创建Axios实例时,可以通过调用axios.create()
方法创建自定配置的Axios实例,代码如下:
const instance = axios.create({
baseURL: 'http://localhost:3000/api/',
});
在以上代码中,我们通过传入一个包含baseURL属性的对象来创建一个名为instance的Axios实例,这个实例的基础URL为http://localhost:3000/api/
。
- 配置Axios实例
在创建好Axios实例后,我们可以对其进行配置,比如设置请求的全局默认配置、拦截请求、拦截响应等,代码如下:
instance.defaults.headers.common['Authorization'] = 'AUTH_TOKEN';
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
instance.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
instance.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
在以上代码中,我们对Axios的实例instance进行了如下配置:
- 设置了请求的主机名(
baseURL
); - 设置http头信息(
defaults.headers
); - 配置了请求拦截器(
interceptors.request
),用于在发送请求之前做一些处理; -
配置了响应拦截器(
interceptors.response
),用于在获取到响应数据之后做一些处理。 -
发起网络请求
在完成Axios配置之后,我们便可以使用它来发起网络请求了,以get请求为例,代码如下:
instance.get('/users')
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
在以上代码中,我们调用实例对象的get()
方法,在获取到数据之后,通过.then()
方法进行处理。在处理成功、失败及异常情况时,可以分别使用.then()
和.catch()
方法进行处理。
示例说明
下面通过2个示例来说明Axios的动态配置。
示例1:应用全局配置
应用全局配置时,可以在创建的Axios实例中设置defaults
对象,代码如下:
const instance = axios.create({
baseURL: 'http://localhost:3000/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
在以上代码中,我们通过传递一个包含baseURL
、timeout
、headers
属性的对象来创建实例,其中:
baseURL
表示要连接的API的基础URL;timeout
表示请求的最长等待时间,单位为毫秒;headers
表示要添加到请求头的自定义属性。
示例2:为不同请求应用不同的配置
为不同请求应用不同的配置时,需要在实例中配置拦截器,使用config
参数可以实现针对单个请求的个性化配置,代码如下:
// 创建axios实例
const instance = axios.create({
baseURL: 'http://localhost:3000/api/'
});
// 添加自定义拦截器
instance.interceptors.request.use((config) => {
// 为POST请求应用全局配置
if (config.method === 'post') {
config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
}
// 为GET请求应用单独配置
if (config.method === 'get') {
config.params = { 'time': Date.now() };
}
return config;
}, (error) => {
return Promise.reject(error);
});
// 发送请求
instance.get('/users').then((res) => {
console.log('success', res);
}).catch((err) => {
console.log('error', err);
});
在以上代码中,发送的网络请求使用了拦截器对进行个性化配置,其中:
- 针对POST请求,设置了
Content-Type
为application/x-www-form-urlencoded; - 针对GET请求,设置了请求参数
params
为当前的时间戳。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:动态Axios的配置步骤详解 - Python技术站