情境: 我有一个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
然后从typedef struct my_type my_type;
获取并处理来自第三方api在将它传回棱角分明之前?
思想:
其他人推荐(和做什么),还有其他任何支持或反对要添加到'思想'太?
答案 0 :(得分:3)
这取决于您的第三方API需要什么。
如果你需要一些凭据来调用API,那么出于安全考虑,最好在后端处理这个调用。
如果API提供时间敏感数据,例如您键入的一些自动完成信息,最好不要对后端进行额外的往返并从前端调用它。
您可以创建一个指向第三方服务器的子域, 像3rdparty-api.yourdomain.com,这消除了很多跨域问题。但这需要您的第三方提供商的合作。
因此,没有明确的是或否答案,但这取决于您的API的情况和重点。
答案 1 :(得分:1)
您的解决方案看起来很好,唯一可能妨碍您使用的第三方API是提供任何类型的分析。如果您从Node调用它,您将覆盖从UI调用时将收集的代理和IP信息。除此之外,我相信直接从UI发出请求可以减轻服务器上的负担,但我不知道这对你是否重要。
答案 2 :(得分:0)
我想说我们也应该注意代码重复。在你的情况下,你都是JavaScript,但对其他许多人来说并非如此。所以假设我消耗api.github.com
所以我不想从前端和后端进行一些调用,然后我认为创建一个能够处理所有这些的控制器是一个不错的选择。
除了像任何分析或跟踪软件这样的情况,额外的往返是可以的。
正如@Wolffc所说,这也可以防止将access_token
发送到可能被滥用的浏览器。