javascript - React 是否可以提供安心的服务?

标签 javascript reactjs rest express post

我正在开发一个 Web 项目,该项目应该使用 React 框架提供 Restful 后期服务。

互联网上有很多消费休息服务的例子。

但是,我想提供安心的服务。

我尝试了以下方法,

1-从React框架提供服务。我认为这是不可能的。

2-从express提供服务并通过代理将其与react绑定(bind) https://www.youtube.com/watch?v=v0t42xBIYIs

对于此示例,get 方法有效,但 post 方法无效。

我的 express 服务器如下。

const express = require('express');
const app = express();

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/api/customers', (req, res) => {

  res.json(req.body);
});


const port = 5000;

app.listen(port, () => `Server running on port ${port}`);

之后,使用代理并像这样 react 代码

  componentDidMount()
  {

      fetch('/api/customers')
      .then(res => res.json())
      .then(customers => this.setState({customers}, () => console.log('Customers fetched...', customers)));

此时我收到以下错误

customers.js:18 GET http://localhost:3000/api/vehicles 500 (Internal Server Error)

感谢您的所有建议。

我正在寻找最佳实践。

最佳答案

React 应用程序构建的结果是脚本包和 html 文件(还可以包括用于调试的源映射),通常称为构建工件。

最佳实践很简单:
当涉及 Express 时,React 应用程序应该从 Express(在这种情况下通常称为后端)下载构建工件和 API 响应。

不遵守此规定会发生什么:
1. React 前端服务器(通常是 webpack-dev-server)用于生产环境。这不是一个好主意,webpack-dev-server仅用于开发。
2. 浏览器检测到从一台服务器(前端)下载的包中的 JS 代码尝试调用另一台服务器(后端)并触发安全违规,这旨在提高安全性。然后人们使用 CORS HTTP header (由后端发送)让后端告诉浏览器:“不用担心安全,不会触发安全违规,我(后端)已经加固到这样的程度了,我不请注意某些不是从我那里下载的代码会尝试访问我”。浏览器会遵守规定,这会导致安全性不必要地降低。

何时代理:
仅在开发中。 webpack-dev-server 非常适合开发,支持实时重新加载、HMR 等。为了保持这些优势,后端 (Express) 可以而且应该充当前端的反向代理。例如。当 Express 收到对构建工件的请求时,它应该首先从前端下载它,然后使用它发送回响应。这可确保不会出现 CORS 问题。

关于javascript - React 是否可以提供安心的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60164710/

相关文章:

javascript - 如何在 node.js 应用程序中包含 JavaScript 文件?

javascript - Video.js cancelFullScreen api 方法在 Firefox 中不起作用

javascript - React JS + React Router 可以使用 $.get 但不能使用 $.ajax PUT

javascript - 未找到错误: Failed to execute 'removeChild' on 'Node' : The node to be removed is not a child of this node

javascript - 在 .innerHTML 内部使用 '>' 会导致 HTML 语句过早关闭

javascript - 如何将参数传递给 Express post HTTP 方法?

javascript - 为该模式编写正则表达式时遇到问题

javascript - 滚动到 UserControl 中的特定 DataList 项

rest - 删除从 chrome 到 couchDB 的 rest 调用

python - Django:补丁和发布需要管理员批准