如何在全球范围内以最佳方式处理来自服务器的 401/403 响应
Posted
技术标签:
【中文标题】如何在全球范围内以最佳方式处理来自服务器的 401/403 响应【英文标题】:How to handle 401/403 responses from server optimally on global level 【发布时间】: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 我也有同样的担忧。如果你能提供一些代码会很有帮助 【参考方案1】:我们有 Axios 请求和响应拦截器。检查响应拦截器文档。他们有很好的定义。
https://axios-http.com/docs/interceptors
【讨论】:
以上是关于如何在全球范围内以最佳方式处理来自服务器的 401/403 响应的主要内容,如果未能解决你的问题,请参考以下文章
React Router 4 如何在函数内以编程方式重定向? [复制]