node.js - 在 restify 中不调用 next() 的后果

标签 node.js restify

我已经使用 Restify 有一段时间了。我遇到了一些缺少 next() 的代码我突然想到我不确定我是否完全理解为什么 next()应该在 res.send() 之后调用.我明白为什么要在中间件情况下使用它,但对于正常路线,为什么需要它?例如:

server.get('/a/:something/',function(req,res,next) {
    res.send('ok');
});

server.get('/b/:something/',function(req,res,next) {
    res.send('ok');
    return next();
});

如果 return next();被排除在代码之外,它似乎不会导致错误,并且可以从我所看到的内容中工作。

最佳答案

restify API Guide有话要说:

You are responsible for calling next() in order to run the next handler in the chain.

他们所指的“链”是每条路由的处理程序链。通常,每个路由将由多个处理程序按特定顺序处理。链中的最后一个处理程序实际上不需要调用 next() ——但假设处理程序总是最后一个是不安全的。未能调用链中的所有处理程序可能会在处理请求时导致严重或细微的错误。

因此,作为良好的编程习惯,您的处理程序应该始终调用 next() [使用适当的参数]。

关于node.js - 在 restify 中不调用 next() 的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354850/

相关文章:

javascript - 从字符串中删除空格、连字符和括号

node.js - 如何将关键字 Nullable(或 allowNull)添加到 Ajv 中?

javascript - 根据数据库结果重新定义动态路由

node.js - 大多数特定 URI 的类似键值的存储

node.js - nodejs/restify - 图像代理服务器

javascript - Node Js 一个带有查询 url 的简单服务器

javascript - Node.JS通用 cometd 查询

javascript - 从 html 按钮单击停止 Node.js 无休止循环

Node.js 在同一项目中进行 React 和 Rest 路由

node.js - 在 Elastic Beanstalk 上运行时如何获取服务器 URL?