Reactjs 如何使用redux saga在API响应中检查过期的JWT令牌?

Reactjs 如何使用redux saga在API响应中检查过期的JWT令牌?,reactjs,api,jwt,redux-saga,Reactjs,Api,Jwt,Redux Saga,测试API是否因React(创建React应用程序)、Redux和Redux Saga中的JWT令牌过期而失败的最佳方法是什么 目前,我正在API函数中检查响应的状态代码,如下所示(我只在1个位置编写了此测试): 在sagas中,我用以下方式测试它: else if(data.unauthenticated) { yield put({type: LOGOUT, message: "You are unauthenticated, Please login again!"}); } 上

测试API是否因React(创建React应用程序)、Redux和Redux Saga中的JWT令牌过期而失败的最佳方法是什么

目前,我正在API函数中检查响应的状态代码,如下所示(我只在1个位置编写了此测试):

在sagas中,我用以下方式测试它:

else if(data.unauthenticated) {
    yield put({type: LOGOUT, message: "You are unauthenticated, Please login again!"});
}
上述方法的问题是,我必须在API调用结束时在每个传奇中编写测试。我在想,是否有可能只在一个地方执行这个测试,就像第一个代码片段一样。因为我认为在不同的地方编写相同的测试只会增加样板代码,如果我必须扩展应用程序,这是不好的


那么,有没有关于我应该怎么做的建议?

您可以为axios实例创建一个全局拦截器

axios.interceptors.response.use(
   (response) => response,
   (error) => {
      if (error.response.status === 401) {
         store.dispatch(
           { type: LOGOUT, message: "You are unauthenticated, Please login again!" },
         );
      }
   },
);

注意:请记住导入您的应用商店以便能够调用dispatch。

您始终可以为axios实例创建一个全局拦截器

axios.interceptors.response.use(
   (response) => response,
   (error) => {
      if (error.response.status === 401) {
         store.dispatch(
           { type: LOGOUT, message: "You are unauthenticated, Please login again!" },
         );
      }
   },
);

注意:记住导入您的店铺,以便能够呼叫调度。

您认为我为什么使用axios?@subham axios还有其他好的替代品吗<代码>请求可能吗?你到底在用什么?我认为axios已经成为React世界API调用的事实标准。是的,我使用axiosonly@subham那你看我为什么要用axios?@subham axios还有其他好的替代品吗<代码>请求可能吗?你到底在用什么?我认为axios已经成为React世界API调用的事实标准。是的,我使用axiosonly@subham那给你