在express documentation中,有以下示例:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method)
next()
})
它解释了该函数是针对/user/:idpath
上的任何类型的HTTP请求执行的。这让我感到困惑,因为看起来app.use
与app.all()
的工作相同。它们是一样的吗?
在描述app.use时,文档始终使用术语mount
和path
。而对于app.get,使用的术语始终为route
。这些意味着什么?
答案 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中意味着不同的东西: