【发布时间】:2018-05-05 18:46:19
【问题描述】:
目前,我正在使用辅助函数和 if 条件,只要有来自 api 的 401(unauth) 或 403(forbidden) 响应,就会将当前位置推送到 /login,如下所示:
request.get(//api url here)
.set('Accept', 'application/json')
.set('Authorization', token)
.then(res => if (res.status_code === 401 || res.status_code === 403) {
helper.redirectToLogin() // pushes the current page to login page
} else
dispatch({type: "FETCHED_DATA"}))
问题:
我正在使用这个辅助函数来处理所有具有多个 api 调用的操作文件(大约 20 个)中的任何 401/403 响应。 那么,有没有办法在全局范围内处理此类响应,这样我就不必在每个 api 调用(可能是 api 中间件或类似的东西)中放置 if 条件和辅助函数?
【问题讨论】:
-
创建一个代表您调用它的函数是否是可接受的结果?
-
是的,只要我不必将条件检查和辅助函数调用放在每个 api 调用中或仅在全局级别。
-
正如@Shadow 建议的那样,您可以为所有必需的 HTTP 方法创建一个包装器,如果状态不是 200(或其他所需的),则拒绝该承诺。然后在使用它时使用 catch 块根据需要重定向。
-
能提供一些代码就更好了,谢谢。
-
@gnmani 我也有同样的担忧。如果你能提供一些代码会很有帮助
标签: javascript reactjs redux react-router superagent