我只想验证一些东西,但在Express文档或在线上找不到与此相关的任何内容(尽管我知道这是一项功能).

我可以测试一下,但我没有一个好的模板,我想听听社区的意见.

如果我在express中定义了这样的路由:

app.get('/', function (req, res) {
  res.send('GET request to homepage');
});

我还可以定义一个中间件并直接加载它,比如

middleware = function(req, res){
  res.send('GET request to homepage');
});

app.get('/', middleware)

但是,我还可以链接这些路由中的至少一个,以运行额外的中间件,例如身份验证:

app.get('/', middleware, function (req, res) {
  res.send('GET request to homepage');
});

这些是无限链的吗?如果我想的话,我可以在给定的路径上粘贴10个中间件功能吗?我想看看那个应用的参数.get可以接受,但就像上面提到的,我在文档中找不到它.

推荐答案

它不是说"无限",而是说可以添加多个中间件功能(文档中称为"callbacks")here:

路由.方法(路径,[回调,…](回拨)

...

You can provide multiple callbacks,所有调用都被平等对待,它们的行为就像中间件一样,只是这些回调可能会调用next("route")来绕过剩余的路由回调.您可以使用此机制对路由执行前置条件,然后在没有理由继续匹配路由时,将控制权传递给后续路由.

正如您所见,中间件函数和通常处理请求的函数(通常是添加到列表中的最后一个函数)之间没有区别.

拥有10个应该不是问题(如果你真的需要的话).

Node.js相关问答推荐

序列化事务未按预期工作

MongoDB-如何验证Document字段以仅允许特定的文件扩展名?

如何使用NodeJS处理来自请求的单个或多个文件?

Jest由于UUID而无法解析测试,即使在Jest中启用ESModule支持后也是如此

如何在Firebase Cloud Function v2计划函数中设置代码中的时区?

如何使用NodeJS在mongodb中更新文档

Puppeteer 的 BrowserFetcher 发生了什么?

NPM如何管理node_modules传递依赖?

Node.js 上的 CLI 应用程序如何通过 child_process 将选项值作为参数传递给 Shell 命令

在 linux mint 上部署 node 应用程序的最简单方法是什么?

TypeError:在使用 Jest、Supertest、Express、Typescript 进行测试时无法读取未定义的属性(读取listen)

使用 node/express/Multer,您如何首先判断参数?

使用 .pipe(res) 向客户端发送音频不允许您搜索?

Winston http 日志(log)级别的行为与 info 不同

AJAX 和 Node JS:在我的服务器中接收空数据

无服务器无法获取所有记录事件对象验证失败?

使用 WebSockets 有服务器成本吗?

如何在 NodeJS 中获取操作系统用户名?

从 CoffeeScript 中的数组中删除一个值

使用 pm2 编程 api 重命名进程