【发布时间】:2020-11-26 19:03:38
【问题描述】:
我正在使用一些公共 api,有时我会从这个 api 503 响应中得到 - 我理解这是因为服务器暂时无法处理请求(过载)。
我想知道在客户端(React)中处理这种情况的最佳实践是什么,因为我知道如果我再次发送请求,我将获得有效数据。
- 我是否需要在超时后继续发送请求?或者我需要抛出并告诉用户再次加载? 任何帮助都是完美的
【问题讨论】:
标签: reactjs web client http-status-code-503
我正在使用一些公共 api,有时我会从这个 api 503 响应中得到 - 我理解这是因为服务器暂时无法处理请求(过载)。
我想知道在客户端(React)中处理这种情况的最佳实践是什么,因为我知道如果我再次发送请求,我将获得有效数据。
【问题讨论】:
标签: reactjs web client http-status-code-503
在“如果我再次发送请求,我将获得有效数据”的情况下。我建议您在超时后再次发送请求。
如您所知,如果您再次发送请求,您将获得有效数据,那么这比要求用户再次重新加载页面更有意义。
当请求获取数据时,您可以向用户显示加载。
【讨论】:
在我看来,您必须让用户知道这种情况作为警告,并在后台尝试每 5 或 10 秒(您的选择)获取数据。
在后端,您可以查看此方法的“断路器”。
如果您正在开发移动应用程序或 PWA(如果您有本地托管数据),则可以在本地存储中管理您的更改,并在建立连接时将本地数据与您的 api 同步(如果您的后端提供此功能)。
【讨论】:
案件的处理方式有多种,通常取决于项目需求来决定。 所以是的,一种处理它的方法是重复请求。有几件事需要考虑:您不想向已经有问题的服务发送垃圾邮件请求,因此您可能希望限制重试次数并使用指数函数(每次下一次重试等待更长的时间)。如果您使用 axois,您可以尝试axios-retry,或者在 fetch 周围实现一些包装器并不难。 也可以将此决定委托给用户 - 即显示一些错误并重试按钮。
【讨论】: