【问题标题】:How should I request API in express SPA implementation?我应该如何在快速 SPA 实施中请求 API?
【发布时间】:2022-08-03 09:34:33
【问题描述】:
我正在使用快速服务器实现 SPA。
服务器正在以下列方式为所有 \'get\' 请求发送 index.html 文件。
app.get(\"/*\", (req, res) => {
res.sendFile(path.resolve(__dirname, \"/public\", \"index.html\"));
});
顺便说一句,我应该如何处理下面的get api请求?我无法收到请求,因为 \'/*\'
app.get(\"/:id\", (req, res) => {
console.log(req);
});
我认为顺序很重要,所以即使我将两者更改并发送请求也是一样的。
有解决办法吗?
-
我不确定这是一个好习惯,但您可以通过Accept 标头example 有条件地提供服务
标签:
javascript
express
axios
single-page-application
【解决方案1】:
分布式架构
遵循保持简单并进行更干净的部署,我建议您在不同的主机、域、git 存储库等上拥有 spa 和 api
在实际场景中,您的 spa 将使用多个 API,因此在其中一个 API 中托管 spa 并不是最佳选择
检查这个以获得更详细的答案
spa + api = 单体
无论如何,如果您需要在 api 中托管 spa,则需要在静态路由之前注册 api 路由:
app.get("/:id", (req, res) => {
console.log(req);
});
app.get("/*", (req, res) => {
res.sendFile(path.resolve(__dirname, "/public", "index.html"));
});
【解决方案2】:
如果您需要在您的 api 中托管您的水疗中心,我认为您应该考虑使用快速控制服务器的 vite ssr。那么你可以使用 app.use("server:port/:id")