【问题标题】:Use external REST API with ReactJS and NodeJS将外部 REST API 与 ReactJS 和 NodeJS 一起使用
【发布时间】:2020-09-21 19:47:28
【问题描述】:

我还在学习 ReactJS 和 NodeJS。

我的开发人员使用 create-react-app 创建了一个样板 我们有一个外部 REST API 服务,我们想要调用(GET、PUT ...)他们的 API 并检索和放置数据。

我的问题是,ReactJS 也可以使用 REST API(外部的,来自另一个网站)。那我为什么需要 NodeJS?我认为理想的情况是 NodeJS 对 ReactJS 进行调用并进行服务器端渲染。

此堆栈的最佳实践是什么。我不需要(或者我不需要?)使用 ExpressJS 构建内部 API,因为我有来自另一个 Web 服务提供商的外部 API,它们从他们的数据存储中为我检索数据。

有人可以详细说明这里的最佳做法吗?

提前致谢。

【问题讨论】:

  • 如果将来您认为您必须构建可能不使用外部 API 的内部 API,那么就有一个 API 层。有很多因素。无论如何,我个人建议拥有一个 API 服务器。如果您需要更改第三方 API 服务提供商,那么您的 API 层应该能够处理它。还有一种可能性是,将来您可能需要集成更多的第三方 API 提供商。

标签: node.js reactjs api rest


【解决方案1】:

React 可以轻松地进行 API 调用。这通常通过 componentDidMount 方法完成,如果使用钩子,则在 useEffect 中完成。

您当然也可以使用后端来发出这些请求,就像您在 NodeJS 中所说的那样。但是否这样做完全取决于您和您的用例

通常您会使用 NodeJS 和后端来帮助分离逻辑,尤其是当您需要调用数据库和其他东西时。

另一个很好的理由是,如果您正在处理敏感信息,您会希望在服务器端而不是客户端处理。

总之,这完全取决于您和您的需求。我个人在 aws 中使用 react 与 lambda/api 网关来分离逻辑

示例节点 js 端点(返回一个数组进行反应)

app.get('/api/my-route', (req, res, next) => {
    const array = [1,2,3,4,5]
    res.json(array)
})

【讨论】:

  • 谢谢。我明白,最好用例如 ExpressJS 作为 API 层来构建我自己的 API,它与外部 API 对话并给我留下选择余地,这是最佳实践。我想使用NodeJS作为后端,但是如何将它与ReactJS连接,以便ReactJS触发NodeJS外部API调用(需要先构建NodeJS中的路由和端点?)
  • 是的,您应该在 express 中构建路线。然后只需做出反应以达到这些端点。你可以在 package.json 中使用一个叫做代理的东西,这样反应就可以到达你的端点。在这里查看更多信息:create-react-app.dev/docs/proxying-api-requests-in-development
  • 谢谢。你的意思是我需要用路由构建我的 Express API。React 会命中这些端点。但是我怎样才能告诉 ExpressJS 调用 REST Api 调用,就像只是对外部 API 进行 http 调用?
  • yeh 做这样的事情app.get('/api/route', (req, res, next) => { // logic in here 然后如果你使用上面的代理你应该可以去localhost:9000/api/route
  • 太棒了。这就是我的想法。因此,当您在这里编写 //logic 时,我假设这是从外部 API 站点调用 REST API 然后返回值或 PUT、POST 值的逻辑。您在这里的最佳做法是什么。哪些模块?我以前是这样使用的:function(req, res) { var request = require('request'); var options = { 'method': 'GET', request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); res.send(response.body ); }); });你在网上有一些例子吗? Github ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2015-01-14
  • 2014-02-26
相关资源
最近更新 更多