在 react-redux 应用程序中使用默认错误处理管理 API 调用

Managing API calls with default error handling in react-redux application

我已经完成了我的应用程序,现在我正在为每个异步操作集成真正的 api 调用。我使用 redux-thunk returns 来自 axios 实例的承诺。

目前我在我的行为中重复了太多相同的逻辑,我确信我遗漏了什么。

API 响应示例

{
    "ok": true,
    "warnings": [],
    "errors": [],
    "response": {/* stuff */}
}

我的想法是,如果 axios 调用失败(因此另一个响应状态然后是 2xx),我需要相同的错误处理。此外,当 api 响应 returns "ok": false 时,我还需要做同样的事情。

我最好发送一个向用户显示通知的操作,以便他们也知道何时出现问题。除此之外,我想记录 api 响应的 warningserror 实体。这主要是因为我将使用sentry进行监控。

关于如何在不对每个 api 调用我的任何动作创建者的每个 api 执行相同逻辑的情况下如何做到这一点的任何想法?

我考虑过使用 axiosonError,但据我所知,它无法发送操作。

您可以使用 response interceptor 来调度适当的操作。创建商店后只需将它们连接起来

const store = createStore(...)

axios.interceptors.response.use((response) => {
  if (!response.data.ok) {
    store.dispatch({ type: "RESPONSE_NOT_OK", response }
  }

  return response
}, (error) => {
  store.dispatch({ type: "RESPONSE_HAD_ERROR", error }

  return Promise.reject(error)
})

显然,您可以随心所欲地处理响应,这只是为了演示目的。