从React App请求数据

问题描述 投票:-1回答:1

假设我有一个在localhost:2000上运行的node.js服务器,它会路由GET请求并调用外部API来填充响应。

现在,我还在localhost:3000上运行了react.js前端,它在localhost:2000查询节点服务器以获取使用axios的响应。

这样做有什么意义?如果我已经在我的反应应用程序中使用axios,为什么我不能直接从它调用外部API?这只是一个设计决定吗?这样服务器 - 客户端分离和清洁代码还是更高的目的?

PS。为了清楚起见 - 此方法与使用react应用程序的代理没有什么不同。正确?即在package.json中配置代理并让react应用程序只是fetch端点?

node.js reactjs axios
1个回答
2
投票

React是应用程序的前端部分,node.js服务器是后端。应用程序前端部分中的所有内容都将暴露给客户端,但服务器端将隐藏给他们,无论您在服务器中执行什么操作都将保持安全(取决于您采取的安全措施)。

如果您只是想访问第三方API并且没有安全理由不这样做(例如,简单地拨打第三方服务,告知您所在国家/地区的官方时间),您可以直接从您的React执行此操作应用程序。您也可以使用节点中的服务器重定向它(首先调用您的服务器,然后从您的服务器调用API)。这里的第二个选项对于简单的事情来说似乎是一条漫长的路线,但在某些情况下,这样做可能会有所帮助,例如,如果您使用某些安全凭证调用API并且希望在服务器中配置它们,那么为了安全起见,或者如果您不想公开调用该外部API的逻辑。通常,从数据库获取信息是在服务器端完成的,而不是在前端端,因为您不希望暴露数据库的服务器,凭据等。

这可能是一个设计决策,出于安全原因,您可以在服务器端获得调用外部API的逻辑。如果您在React中管理此信息(意味着前端),您将向客户端公开大部分此类信息(前端的所有内容都将在某个时刻加载到浏览器中)。

在React应用程序中保持简单的呼叫,在服务器端进行重要的安全呼叫。

© www.soinside.com 2019 - 2024. All rights reserved.