注册快速中间件的最佳做法是什么?

问题描述 投票:0回答:1

我目前处于这样一种情况,我需要创建一个小型的npm软件包来提供快速的middelware。目标是这个middelware注册一个端点并将一些数据传递给客户端。通常我会写我的middelware然后消费者以下列方式使用它:

expressApp.use('/mypath', myMiddelware)

但我还将提供一个将调用此端点的Angular模块。因此,我需要确保端点匹配。使用上面的代码,我的middelware的消费者可以控制路径。但我希望实现我的middelware控制路径。因此我选择了以下方法:

我的中间件

const myMiddelware = function(res, req, next){
  if(req.path === '/mypath'){
    res.send('some data')
  }
}

通过这种方法,用户可以通过以下方式使用中间件:

expressApp.use(myMiddelware)

我在网上搜索了很多,并没有找到一个使用我的方法的例子。我也看到了我的方法的缺点。我的middelware将被调用所有请求,导致不必要的检查。

有没有人能解决这个问题呢?

node.js rest express
1个回答
1
投票

如果你的函数应该只在一条路径上处理请求,那么它不是真正的中间件。这是一个特定的请求处理程序。只要用这个:

app.get('/mypath', myRequestHandler)

然后,这完全是明确的。您的请求处理程序仅在请求为/mypath时被调用,并且您不需要在请求处理程序内再次检查它,并且当它不是正确的路径时不会调用您的函数。

如果您还要覆盖其他http动词,可以单独指定它们,也可以使用app.all()

我的middelware将被调用所有请求,导致不必要的检查。

您的中间件不是真正的中间件。这是一个请求处理程序。所以,不要将它作为中间件附加。将其作为请求处理程序附加。然后,当路径完全匹配您想要匹配的路径时,它将仅被调用。

© www.soinside.com 2019 - 2024. All rights reserved.