【问题标题】:Requesting data from a React App从 React 应用程序请求数据
【发布时间】:2018-08-29 16:08:55
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: node.js reactjs axios


    【解决方案1】:

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

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

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

    在你的 React 应用中保留简单的调用,在你的服务器端保留重要的安全调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 2016-05-30
      • 2014-08-06
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多