在什么特定情况下使用拦截器?在什么情况下不能使用?

In what specific cases are interceptors used? And in what cases cannot be used?

我大致搞清楚了如何实现拦截器。但是具体在什么情况下使用我无法理解。

例如,据我了解,在授权期间使用拦截器来更新本地存储中的令牌。好

但我不明白在什么情况下它们仍然被使用,在什么情况下它们不能被使用。还是直接在所有请求中使用?

如果您是 consumer-side 开发人员,您可以将拦截器框架用于许多不同的目的。一些最常见的拦截器用例包括:

  • 处理错误——您可以使用拦截器来处理生产者返回的错误。例如,如果特定生产者未注册,您可以捕获注册错误并按您的意愿进行处理。您可以向用户显示信息性消息,或者您可以选择自动注册生产者。拦截器还可以捕获 I/O 异常,如果生产者不可用,就会发生这种情况。在这种情况下,您可以选择通过向用户显示信息性消息来处理错误,防止将来向生产者发出请求,或者选择重定向到另一个生产者。
  • 缓存标记 – 您可以实施拦截器来缓存从生产者返回的标记。此功能允许您使用您选择的任何外部缓存系统。此外,通过在消费者上缓存标记,在某些情况下,您可以减少消费者和生产者之间的 round-trip 通信。
  • 验证数据 – 您可以使用拦截器来过滤用户提交的数据。如果您检测到用户的数据无效,您可以显示一条信息性消息,或者您可以阻止将数据发送给生产者。
  • 替换标记——拦截器可以过滤、替换、修改从生产者发送的标记数据。拦截器还可以修改远程 portlet 的导航状态。有关导航状态的信息,请参阅远程 Portlet 的生命周期。
  • 修改 HTTP Headers – 拦截器可以添加或删除某些类型的 HTTP headers,也可以检查响应 headers。有关拦截器可以修改哪些类型的 HTTP headers 的详细信息,请参阅 Javadoc。

示例:https://bilot.group/articles/using-react-router-inside-axios-interceptors/