最佳实践 - 在单页应用程序中调用 API 和服务



我有一个单页应用程序需要调用各种Web服务和/或API。我想了解从 SPA 进行 api 或服务调用的普遍同意的方法是什么。我们目前有两种方法

  1. 对于某些第三方 API - 我们在没有服务器端代理的情况下从单页应用程序进行直接调用。为了使它正常工作,我们启用了 CORS。

  2. 对于其他 API 调用 - 我们调用代理(包装器),该代理负责将它们重定向到适当的端点。

我们决定使用哪种方法是 - 如果在调用第三方 API 之前需要进行某种数据操作 - 我们使用代理 - 否则我们会从 SPA 直接调用。这是一种有效的方法吗?从安全角度来看,您对第一种方法是否强大有任何反馈吗?在第一种方法中,我们有一个仅http的cookie,用作访问令牌来调用第三方api。这是否会使我们公开的 API 容易受到攻击?

提前致谢

我强烈建议您代理所有 API 调用。

对于某些用例,调用第三方 API 是可以的,但如果您开始不得不处理其中的很多用例,则不行。

以下是我的关键点:

  • 接口 API 允许集中第三方 API 的列表、组织和更新。它还使构建自己的跟踪,统计信息和监视变得更加容易。
  • 如果任何 API 关闭,您可以重新路由它,并提供足够的错误处理,以避免由于第三方 API 关闭而给您的客户带来令人沮丧的超时/丑陋的错误消息
  • 您将客户与外部服务隔离并保护:是的,如果第三方API被恶意用户利用(例如:返回"坏"图片,重定向导航...),您可以过滤它。
  • 更改 API 代理的一个主机名很容易,更改 20 个主机名则更难。如果要将应用程序迁移到封闭环境(专用网络),则在涉及DNS,代理,网关等的所有问题时,API代理将是一个真正的帮手。
  • 您可以提供自己的标准化 API 来连接所有其他 API:这将是开发的加速器。看看GraphQL是否可以帮助您执行多 API 调用和结果大小优化。

最新更新