回调函数req。和res

时间:2016-03-10 03:26:09

标签: javascript node.js express

我很难理解为什么我的回调函数需要2个参数,即一个用于请求,一个用于响应?

例如,我将回调函数绑定到我的服务器:

server.on("request", doThis(req, resp));

在我看来,他只需要一个参数(例如req)来存储req信息(GET,POST,url等)。为什么他需要一秒钟的回应?我在resp中写了这些信息。 (即服务器,所以我的其他脚本)而不是客户端。

每次请求进入时,都会调用回调函数,因此设置了req参数。我错了吗?但为什么我需要响应参数?我的服务器在响应时需要它,但在我读取/保存请求信息时却不需要它?

1 个答案:

答案 0 :(得分:1)

Response参数通常用于发回响应。

请求进来,您在req(第一个)参数中获取请求的数据,然后使用res(第二个)参数发回一个响应,如:

server.on('message', function(req, res){
    res.send('hello your ip is: ' + req.client.ip);
})

这完全取决于你的框架,但在 expressjs 这就是它的工作原理(或多或少)。

要回答你的问题,你不需要它 - 你根本不能将它作为参数发出(虽然它仍然可以访问)如果你不打算做出响应(这很奇怪且非常罕见)

server.on('message', function(req){
    console.log('someone requested "message"')
})

一般来说,尽管最终用户可能永远不会在视觉上看到它,但您总是会发回回复,只是为了确认操作已成功完成。

server.on('save', function(req, res){
    saveFile(req.file)
    res.sendStatus(200)
})

此外,您可以检查过程是否成功完成 - 如果它确实发送回成功消息,否则发回错误消息。

server.on('save', function(req, res){
    saveFile(req.file, function(error){
        if(error) res.sendStatus(500)
        res.sendStatus(200)
    })
})