当前位置: 首页 > 知识库问答 >
问题:

app . get-RES . send和return res.send有什么区别吗

方航
2023-03-14

我是结点和快递新手,见过app.getapp.post例子同时使用“res.send”和“res.send”,这些是一样的吗?

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.type('text/plain');
  res.send('i am a beautiful butterfly');
});

或者

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.type('text/plain');
  return res.send('i am a beautiful butterfly');
});

共有3个答案

景宏盛
2023-03-14
app.get('/', function(req, res) {
    res.type('text/plain');
    if (someTruthyConditinal) {
        return res.send(':)');
    }
    // The execution will never get here
    console.log('Some error might be happening :(');
});

app.get('/', function(req, res) {
    res.type('text/plain');
    if (someTruthyConditinal) {
        res.send(':)');
    }
    // The execution will get here
    console.log('Some error might be happening :(');
});
殳智志
2023-03-14

我想指出它在我的代码中的确切位置。

我有一个对令牌进行身份验证的中间件。代码如下:

function authenticateToken(req, res, next) {
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(' ')[1] || null;

  if(token === null) return res.sendStatus(401); // MARKED 1
  jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
    if(err) return res.sendStatus(403); // MARKED 2
    req.user = user;
    next();
  });
}

在< code>// MARKED 1行上,如果我没有写return,中间件将继续调用< code>next()并发送一个状态为< code>200的响应,这不是预期的行为。

类似//标记2

如果在这些< code>if块中没有使用< code>return,请确保使用调用< code>next()的< code>else块。

希望这有助于从一开始就理解这个概念并避免错误。

谭嘉歆
2023-03-14

return关键字从函数返回,从而结束其执行。这意味着它之后的任何代码行都不会被执行。

在某些情况下,您可能希望使用res.send,然后做其他事情。

app.get('/', function(req, res) {
  res.send('i am a beautiful butterfly');
  console.log("this gets executed");
});

app.get('/', function(req, res) {
  return res.send('i am a beautiful butterfly');
  console.log("this does NOT get executed");
});
 类似资料:
  • 问题内容: 我是的初学者,对以下两个关键字感到困惑:和。 它们是相同还是不同? 问题答案: 将发送HTTP响应。它的语法是 主体参数可以是Buffer对象,String,对象或Array。例如: 请参阅此以获取更多信息。 将结束响应过程。该方法实际上来自Node核心,特别是的方法。它用于快速结束没有任何数据的响应。例如: 阅读此以获得更多信息。

  • 问题内容: 我是一个初学者,我试图理解之间的差异和? 问题答案: 重新发送 res.send仅在Express js中。 为简单的非流式响应执行许多有用的任务。 能够自动分配Content-Length HTTP响应标头字段。 能够提供自动的HEAD和HTTP缓存新鲜度支持。 实际说明 只能被调用一次,因为它等同于+ 例 有关更多详细信息expressjs.com/en/api.html 重新写入

  • 问题内容: 我有一个具有以下用于路由的代码的应用程序: 现在,我必须将路由代码放在不同的文件中,因此我尝试使用此方法,但是它可能 无法 工作,因为它代替了它,而使用了: 如何使用将路由放入不同的文件中? 为什么,,,等,都没有在工作使用后在其中? 问题答案: 这是一个简单的例子: 在这里, 将实例安装在 ,这样添加到实例的任何路由都将相对于。

  • 问题内容: 两者都意味着空间,但是有什么区别吗? 问题答案: 一个是不间断空间,另一个是常规空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。 此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。

  • 本文向大家介绍<%# %> 和 <% %> 有什么区别?相关面试题,主要包含被问及<%# %> 和 <% %> 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 答:<%# %>表示绑定的数据源 <%%>是服务器端代码块  

  • 问题内容: 我从NodeJS和Express 4开始,我有些困惑。我正在阅读Express网站,但看不到 何时 使用路由处理程序或何时使用。 如我所见,例如,如果我想在用户点击时显示页面或其他内容,则应使用: 一开始,我认为这很旧(对于Express 3)。是这样吗,还是Express 4也是如此? 如果这是在Express 4中实现的方式,它的用途是什么? 我读了几乎与上面相同的示例,但是使用了