javascript - 是否可以通过反应提供宁静的服务?
问题描述
我正在开发一个 Web 项目,该项目应该提供带有反应框架的宁静的后期服务。
互联网上有很多消费休息服务的例子。
但是,我想提供宁静的服务。
我尝试了以下,
1-从反应框架提供服务。我看这是不可能的。
2- 提供快递服务并通过代理 https://www.youtube.com/watch?v=v0t42xBIYIs将其与反应绑定
对于此示例,get 方法有效,但 post 方法无效。
我的快递服务器如下所示。
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}`);
之后,使用代理并像这样反应代码
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 标头(由后端发送)让后端告诉浏览器:“不要担心安全性,不要触发安全违规,我(后端)已经被强化到了这样的程度,以至于我没有小心一些不是从我这里下载的代码试图访问我”。浏览器符合要求,这导致安全性不必要地被淡化。
何时代理:
仅在开发中。它支持 Live Reloading、HMR 等,webpack-dev-server
非常适合开发。为了保持这些优势,后端(Express)可以而且应该作为前端的反向代理。例如,当 Express 收到对构建工件的请求时,它应该首先从前端下载它,然后使用它来发回响应。这可确保不会出现 CORS 问题。
推荐阅读
- c++ - 在仿函数中访问 using 声明:与范围相关的问题
- bash - grep 命令没有这样的文件或目录
- java - java.io.IOException:ipm.note。该系统找不到指定的文件
- lldb - 在 lldb 中单步执行代码时显示源文件的完整文件路径
- python - 使用列数组矢量化 pandas 数据框列查找
- javascript - 无法访问 Jquery 中隐藏字段的值
- blockchain - AVM 部署到远程 AION 内核
- excel - 在第一列。我有像 2abc 和 22abc 这样的代码,我希望 2 变成 02abc
- reactjs - 使用 Redux 时如何管理 TextInput 更改的组件状态?
- python - 我的 sum 函数不会对某些列的值求和