javascript 如何在快速静态获取后请求额外的GET方法?

wgmfuz8q  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(104)

我正在使用node express构建我的服务器和客户机。
我想我的HTML文件第一(这是由表达静态自动完成),然后JSON文件下,使JSON数据显示在我的html文件很好。
这是我的文件结构

- index.js
- public
 |
  - index.html
 |
  - front-end.js

index.js

const express = require('express');
const app = express();
const names = {...}

app.use(express.static('./public'));

app.get('/', (req, res) => {
  return res.json({names});
})

front-end.js

axios.get('/')
  .then(res => {
    console.log(res)
  })
  .catch(err => {
    console.error(err);
  })

index.html

<html>
...
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script src="front-end.js"></script>
</html>

但是JSON数据传输部分不起作用。我在axios中唯一能得到的res是index.html文件。它是用static通过express内部完成的。我看了关于express静态选项的文档,但还没有发现任何线索。
在保留express.static器件的同时,我还能做些什么?或者我需要更换器件吗?

8i9zcol2

8i9zcol21#

客户端(如浏览器)发出一个HTTP请求,然后得到一个HTTP响应。一个 * 单个 * HTTP响应。你不能对一个请求发送多个响应。
在本例中,浏览器请求/,Express依次检查每条路由,直到找到匹配项。由于在使用static配置/的目录中有一个index.html文件,因此它将提供该文件,并且永远不会到达app.get('/'
也就是说,我不知道一个URL同时提供HTML文档和JSON文本会有什么样的行为,它们本质上是非常不同的东西,处理方式也非常不同。
也许您希望JSON文本中的数据可用于HTML文档中运行的JavaScript。
在这种情况下:

  • 为处理JSON的端点提供不同的路径
  • 使用Ajax(例如,使用已经加载的axios库)请求该URL
  • 使用DOM manipulation将数据添加到文档

相关问题