2017-04-02 67 views
0

我将演示这个简单的代码,我的问题中的POST请求:使用GET请求的回电(瓶盖)

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值记录到控制台。

它为什么这样表现?我已经尝试了很多东西,如传递对象和通过其他函数等。

我熟悉闭包的工作方式,但显然不完全,因为这绝对是POST回调的问题,保留了值查询参数并且不更新它们。

谢谢。

回答

1

我不确定你在做什么。没有人在GET中定义POST,除非您希望GET请求更改服务器的行为,否则他们会在根级别执行此操作。 app.post表示'添加一条新路线来处理POST'。也许你想实际上发送来自GET处理程序的HTTP请求?

如果您希望更改行为,可能只是在根级别处理POST并在GET处理程序中设置全局标志,以指示POST应该对后续请求执行不同的操作。

+0

我正在通过查询参数获取信息,这些查询参数需要在发送到同一页面的请求时查询数据库。因此,我需要该帖子才能访问查询参数 – JohnSnow

+1

因此,为了执行该操作,客户端需要GET和POST到相同的URL?从来没有听说过任何人这样做..如果你真的需要存储状态,你可以使用数据库或类似全局变量,而不是闭包。但我想通常你只需要发送POST请求。 –

+0

是的,我明白了,谢谢 – JohnSnow