You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中禁用或更新特定路由页面的响应内容

问题原因

你当前的实现逻辑不符合Express的路由规则:相同路径的路由会优先匹配第一个注册的处理函数,后续重复注册app.get("/test2/")的代码不会生效,所以接口返回的x值永远是第一次POST提交的内容,不会更新。

服务端修正方案(无需数据库)

不要动态注册路由,改用全局变量存储需要同步的内容,/test2路由仅注册一次,每次请求返回当前存储的最新值即可:

// 全局变量存储共享数据,服务重启后数据会清空,符合无需数据库的需求
let sharedContent = {
  variable: ""
};

// 仅注册一次/test2路由,固定返回当前的共享数据
app.get("/test2/", function(req, res) {
  res.json(sharedContent);
});

app.post('/Send', function(req, res){
  console.log(req.body.signed);
  // 收到POST请求直接更新全局变量即可完成数据同步
  sharedContent.variable = req.body.signed;
  // 给POST请求返回响应,避免前端请求超时
  res.send({status: "ok"});
});
前端无刷新更新实现

要实现另一个HTML页面无需重载即可获取最新内容,可选两种方案:

  • 短轮询方案(实现最简单):前端页面固定间隔请求/test2接口,拿到新数据后更新页面DOM即可,前端示例代码:
// 页面展示内容的DOM节点,比如<div id="content-box"></div>
const contentBox = document.getElementById("content-box");

function updateContent() {
  fetch("/test2")
    .then(res => res.json())
    .then(data => {
      contentBox.textContent = data.variable;
    })
}

// 页面加载时先拉取一次数据
updateContent();
// 每2秒拉取一次最新数据,可根据需求调整间隔时间
setInterval(updateContent, 2000);
  • WebSocket方案(实时性更高):如果需要毫秒级的更新延迟,可以接入WebSocket,服务端收到POST请求后直接把新内容推送给所有连接的客户端,不需要前端定时轮询。

内容的提问来源于stack exchange,提问作者Turtle corporation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:24:04