为什么大多数人使用拦截器在改造中添加身份验证标头?


  • Stack Overflow Q&A
  • 中型博客文章
  • 更多博客文章

它们中的每一个都在拦截器阶段添加身份验证,而不是使用@Header@Headers注释来改造。有什么原因吗?因为有时你会有一个不需要身份验证的 API(例如,如果你有一个后端系统状态端点),即使它不会破坏任何东西,它只是感觉不必要,而且有点隐藏。

提前感谢!

有什么原因吗?

在许多情况下,这比必须将身份验证标头作为参数传递给需要该标头的每个 Retrofit 方法更方便。

例如,假设我们正在与具有 123,456,789 个需要命中的终结点的 Web 服务进行交互。根据您的计划,我们需要:

  • @Header注释参数添加到我们的改造 API 接口上的 123,456,789 个方法
  • 安排将该参数传递给这 123,456,789 个方法的所有调用

通过使用拦截器,我们添加一个拦截器,它涵盖了所有这些方法。

因为有时你会有一个不需要身份验证的 API(例如,如果你有一个后端系统状态端点)

假设其中 789 个终结点不需要身份验证。其余123,456,000人这样做。根据您的计划,我们需要:

  • @Header注释参数添加到我们的改造 API 接口上的 123,456,000 种方法
  • 安排将该参数传递给这 123,456,000 个方法的所有调用

使用拦截器,我们需要一个拦截器来处理所有这些。该拦截器可能有一些白名单,以确定哪些端点可以跳过标头,使用:

  • 路径正则表达式
  • 路径段匹配
  • 完整路径匹配
  • 无论什么

显然,我在这里开玩笑,因为很少有 Web 服务有 123,456,789 个端点。

但是,有一些盈亏平衡点,其中使用拦截器将比处理@Header参数更简单。盈亏平衡点在哪里取决于开发团队。

最新更新