在Express.js中,我应该回复还是不回复?

时间:2015-12-13 22:07:52

标签: javascript node.js express typescript

对于Express.js 4.x我找不到我应该返回响应(或下一个函数),所以:

此:

app.get('/url', (req, res) => {
    res.send(200, { message: 'ok' });
});

或者这个:

app.get('/url', (req, res) => {
    return res.send(200, { message: 'ok' });
});

有什么区别?

3 个答案:

答案 0 :(得分:5)

我不同意以上答案。 有时,回调函数可能会根据应用程序的逻辑返回多个响应:

router.post("/url", function(req, res) {
// (logic1)
     res.send(200, { response: 'response 1' });
   // (logic2) 
      res.send(200, { message: 'response 2' });
    }})  

这将引发此错误:

错误[ERR_HTTP_HEADERS_SENT]:发送标头后无法设置标头 给客户

使用 return 实际上可以解决哪些问题。也可以使用if else子句解决。

答案 1 :(得分:4)

你不是。 (req, res)签名告诉表明这是链中的最后一个函数。它不期望该函数的返回值;你可以添加一个回报,但它会做什么"没有" (超出JS引擎执行一些额外但无意义的开销)

答案 2 :(得分:0)

这取决于。

调用resreq回调并不意味着您的路由功能将停止工作

app.get('/url', (req, res) => {

    if (true) {
        res.send(200, { message: 'ok' });
    }

    const newFunction = () => {
        // stuff useless to your routing function
    }
    newFunction()

});

在这里newFunction()会被调用,它是无用的,它将影响您的服务器性能。

您最好每次都使用return res.send(200, { message: 'ok' });,除非您想在后台进行处理...

通常不能期望超过经典的30秒http请求的过程。 (例如,我每天要花4到5个小时制作一个:D)