来自前端或后端的外部API调用?

seaque 发布于 4 天前 angularjs 最后更新 4 天前 1 浏览

场景: 我有一个Node和Angular web应用程序。 它需要调用外部API(第三方服务)来获取数据(更具体地说,这是:https://api.represent.me/api/questions/)。 题: 从Angular前端进行外部调用是更好吗:GET http://thirdpartyservice.com/api/data还是让前端调用同一个域Node节点:GET http://example.com/node-backend-api然后调用GET http://thirdpartyservice.com/api/data,然后从第三方api获取并处理数据,然后再将其传递回角? 思考:

  • 我猜两个api调用不太理想,但它在同一个域中 所以这不是一个真正的问题?
  • 从节点端获取更安全(尤其是在秘密的情况下) 键被使用),并且掩盖了第三方服务的事实 使用。
  • 如果从前端进行调用,CORS可能会阻碍。
  • 此处是关键字,例如从中调用字体apis 前端可能是最好的,但是提取并需要处理数据 从后端开始可能会更好。
别人推荐(和做)什么以及是否有任何其他赞成或反对点以增加“想法”?
已邀请:

out

赞同来自:

您的解决方案看起来很好,唯一可能妨碍您使用的第三方API是否提供任何类型的分析。如果您从Node调用它,您将覆盖从UI调用时将收集的代理和IP信息。除此之外,我相信直接从UI发出请求可以减少服务器上的负载,但我不知道这对你是否重要。

nnam

赞同来自:

我会说我们也应该关注代码重复。在你的情况下,你都是JavaScript,但对其他许多人来说并非如此。所以让我说我消耗api.github.com所以我不想从前端和后端进行一些调用,然后我认为创建一个能够处理所有这些的控制器是一个不错的选择。 除了像任何分析或跟踪软件的情况,额外的往返是可以的。 正如@Wolffc所说,这也可以防止将access_token发送到可能被滥用的浏览器。

est_ut

赞同来自:

这取决于您的第三方API需要什么。 如果您需要一些凭据来调用API,那么由于安全问题,最好在后端处理调用。 如果API提供时间敏感数据,例如您键入时的一些自动完成信息,那么最好不要对后端进行额外的往返并从前端调用它。 您可以创建一个指向第三方服务器的子域, 像3rdparty-api.yourdomain.com,这消除了很多跨域问题。但这需要您的第三方提供商的合作。 因此,没有明确的是或否答案,但这取决于您的API的情况和重点。