何时使用app.use以及何时使用app.all?

时间:2017-01-28 08:52:35

标签: node.js express

express documentation中,有以下示例:

app.use('/user/:id', function (req, res, next) {
  console.log('Request Type:', req.method)
  next()
})

它解释了该函数是针对/user/:idpath 上的任何类型的HTTP请求执行的。这让我感到困惑,因为看起来app.useapp.all()的工作相同。它们是一样的吗?

在描述app.use时,文档始终使用术语mountpath。而对于app.get,使用的术语始终为route。这些意味着什么?

3 个答案:

答案 0 :(得分:0)

app.use通常用于中间件(如cors或logger)。需要在资源上发出get请求时使用app.get。

答案 1 :(得分:0)

文档说app.use(....)路径上的任何类型的HTTP请求都执行了/user/:id,而app.get(...)(作为app.METHOD的一个例子)处理(特别是)GET对给定路径发出的请求,同样适用于只处理HTTP post请求的app.post()

答案 2 :(得分:0)

我理解路由器只是另一个功能。通常路由器期望 装载路径不可见;否则在您的路由器中需要重复 装载路径。

router with app.use("/users", router)
router.get('/', function(req, res) {});
router.get('/test', function(req, res) {});

router with app.get("/users", router)
router.get('/users/', function(req, res) {});
router.get('/users/test', function(req, res) {});

为了使用带有.get的路由器重复安装路径 它没什么用处。

   app.use( "/product" , mymiddleware);
// will match /product
// will match /product/cool
// will match /product/foo

注意use和get之间的区别?这些在Express.js中意味着不同的东西:

  • 使用意味着“在所有请求中运行此”
  • get表示“在给定URL的GET请求中运行此”