如何在ES6生成器中使用axios拦截器?

p

当前,我有这个Axios调用,我想实现的是在ES6生成器中使用拦截器。

如果后端服务发送回“ 401”响应,我想使用axios拦截器重试请求,有什么建议吗?

const token = '...';

export function* getUsers(user) {
  return yield axios({
    headers: {
      Accept: "Aplication/json",
      Authorization: `Bearer ${token}`,
    },
    method: "get",
    url: '/getUsers/:id'
 })
  .then(data => data)
  .catch(e => e)
 }
尼古拉斯网

也许您可以尝试这样的事情。

import axios from "axios";

export const getClient = (token) => {
    const options = {};
    if (token !== null) {
        options.headers = { Authorization: `Bearer ${token}` };
    }

    const instance = axios.create(options);
    instance.interceptors.response.use((response) => response, (error) => {
        if (error.response.status === 401) {
            window.location = '/logout'; // Or whatever you want to do
        }
    
        return Promise.reject(error);
    });
    
    return instance;
};

export function* getUsers(user) {

    return yield getClient('JTW_TOKEN').get('/getUsers/:id').then(data => data).catch(e => e)
}

我个人更喜欢为get / post / delete / put / patch等提供一种单独的方法,但并非必须如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章