【问题标题】:In what specific cases are interceptors used? And in what cases cannot be used?在哪些特定情况下使用拦截器?在什么情况下不能使用?
【发布时间】:2021-11-06 20:19:59
【问题描述】:

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

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

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

【问题讨论】:

  • 当你想预处理一些数据时使用它们。这过于通用,但它们的用途是通用的。你不需要到处都有拦截器。因此,当他们碰巧有帮助时,请使用它们。如果它们没有帮助,请不要使用它们。
  • 除了令牌我还能检查什么?还是只验证令牌?
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: javascript axios request response interceptor


【解决方案1】:

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

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

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

【讨论】:

  • 你好兄弟!注册(未登录)时如何使用拦截器?注册时使用吗?
  • 一般在注册时不使用拦截器,常见用例是身份验证或处理错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多