Axios 请求拦截器里调接口
时间: 2023-10-01 14:04:46 浏览: 140
在 Axios 的请求拦截器中调用接口需要注意以下几点:
1. 不能直接在请求拦截器中调用接口,这会导致死循环,因为请求拦截器会在每次请求之前都被调用。
2. 应该使用 Promise 来返回一个异步操作,等待异步操作完成后再进行下一步操作。
3. 需要注意请求拦截器中的上下文环境,可能需要通过箭头函数或者 bind 方法来绑定上下文环境。
下面是一个例子:
```javascript
import axios from 'axios';
const instance = axios.create({
baseURL: 'http://localhost:3000',
});
instance.interceptors.request.use(
function(config) {
// 在请求发送之前做一些事情
return new Promise((resolve, reject) => {
axios.get('/user').then((response) => {
config.headers.Authorization = response.data.token;
resolve(config);
}).catch((error) => {
reject(error);
});
});
},
function(error) {
// 处理请求错误
return Promise.reject(error);
}
);
instance.get('/api/data').then((response) => {
console.log(response.data);
}).catch((error) => {
console.log(error);
});
```
在这个例子中,请求拦截器中会先发送一个 GET 请求获取用户的 token,然后通过 Promise 将 token 注入到请求头中,最后返回一个 Promise 对象。在请求拦截器中使用 Promise 是为了确保请求拦截器中的异步操作完成后再继续发送请求。
阅读全文