同时多个axios请求_nuxt asyncData并发请求JWT token 错乱问题
时间: 2023-12-06 18:41:15 浏览: 115
解决vue项目axios每次请求session不一致的问题
在Nuxt中,可以使用`asyncData`方法来进行异步数据的获取。假设你需要同时进行多个axios请求,并且这些请求都需要使用JWT token,可以采取以下步骤:
1. 在Nuxt的`nuxt.config.js`文件中配置axios,包括设置baseURL、设置请求拦截器等。
```
export default {
axios: {
baseURL: 'https://api.example.com',
// ...
// 设置请求拦截器
interceptors: {
request: ({store}, config) => {
const token = store.state.auth.token;
if (token) {
config.headers.common.Authorization = `Bearer ${token}`;
}
return config;
}
}
}
}
```
2. 在`asyncData`方法中同时发起多个axios请求,可以使用Promise.all方法来等待所有请求返回结果。
```
async asyncData({ $axios, store }) {
const [user, todos] = await Promise.all([
$axios.$get('/user'),
$axios.$get('/todos')
]);
// ...
}
```
3. 在发起请求之前,先确保JWT token已经被获取并存储到了Vuex store中。可以在Nuxt的`middleware`中获取token并存储到store中。
```
export default function ({ store }) {
// ...
// 获取token并存储到store中
const token = Cookies.get('token');
if (token) {
store.commit('auth/setToken', token);
}
}
```
阅读全文