如果router.all()只匹配所有的方法,那么它会由router.use()代替吗?以及router.use()在router.route()之间的区别
发布于 2017-08-30 02:59:38
router.all()匹配每个http协议,router.use()用于中间件,router.route()返回单个路由的实例,然后您可以用可选中间件来处理HTTP谓词。你应该向文档查询更多的信息。
发布于 2017-08-30 03:08:23
router.all:这意味着,请求的方法并不重要。(post、get、put),如果url匹配,则执行函数。
前router.all(" /abc ",fn)将适用于所有对/abc的请求。
router.use() :router.use()帮助您编写模块化路由和模块。你基本上为路线定义了一个中间的软件。
router.use("/pqr",pqrRoutes)
现在,对于以/pqr开头的所有请求,如/pqr/new或/pqr/xyz,可以在pqrRoutes内部处理。
router.route():--这是为单个url端点定义不同方法实现的好方法。
让我们简单地说你有两个api端点。router.get("/jkl")和router.post("/jkl"),使用router.route(),您可以将这些不同的api处理程序进行某种程度的组合。
你可以说router.route("/jkl").get(fn1).post(fn2)
发布于 2017-08-30 03:12:43
app.all(),它不是从任何HTTP方法派生的。此方法用于在所有请求方法的路径上加载中间件功能。
app.all('/secret', function (req, res, next) {
console.log('Accessing the secret section ...')
next() // pass control to the next handler
})使用express.Router类创建模块化的、可挂载的路由处理程序。路由器实例是一个完整的中间件和路由系统;因此,它通常被称为“迷你应用程序”。
下面的示例创建一个路由器作为一个模块,在其中加载一个中间件功能,定义一些路由,并在主应用程序中的路径上挂载路由器模块。
var express = require('express')
var router = express.Router()
// middleware that is specific to this router
router.use(function timeLog (req, res, next) {
console.log('Time: ', Date.now())
next()
})基本上,当我们使用中间件.use时,我们使用express.Router。
使用express.Router类创建模块化的、可挂载的路由处理程序。路由器实例是一个完整的中间件和路由系统;因此,它通常被称为“迷你应用程序”。
下面的示例创建一个路由器作为一个模块,在其中加载一个中间件功能,定义一些路由,并在主应用程序中的路径上挂载路由器模块。var express =需要量(‘express’) var路由器= express.Router()
// middleware that is specific to this router
router.use(function timeLog (req, res, next) {
console.log('Time: ', Date.now())
next()
})
// define the home page route
router.get('/', function (req, res) {
res.send('Birds home page')
})这里可以有多个路由器,这个路由器的实例在快速定义下面定义了一个路由器的名称。以下是路由器https://expressjs.com/en/guide/routing.html的文档
https://stackoverflow.com/questions/45951163
复制相似问题