我将用这个简化的代码演示我的问题:
app.get('/test', (req, res) => {
let x = req.query.someVar;
app.post('/test', (req, res) => {
console.log(x);
});
res.send(`Hello ${req.query.someVar}`);
});
第一次运行此代码时,POST回调函数会保存对x
的引用,这是我作为查询参数传递的内容。如果我更改查询参数,发送另一个GET请求,它将在服务器的响应中更新,即res.send(
Hello $ {req.query.someVar} );
,但POST请求仍将记录原始x
1}}值到控制台。
为什么这样做?我尝试了很多东西,比如传递物体和其他功能等等。
我熟悉闭包是如何工作的,但显然并不完全,因为这绝对是POST回调保留查询参数值而不更新它们的问题。
感谢。
答案 0 :(得分:1)
我不确定你要做什么。没有人在GET中定义POST,他们在根级别执行此操作,除非您希望GET请求更改服务器的行为。 app.post意味着添加一条新的路线来处理POST'。也许你想从GET处理程序发送 HTTP请求?
如果您希望更改行为,可能只是在根级别处理POST并在GET处理程序中设置一个全局标志,以指示POST应该对后续请求执行不同的操作。