Abaixo o código é de http://expressjs.com/en/guide/using-middleware.html#middleware.router. Ele define um middleware na instância expressa do roteador. Funciona bem, mas se eu definir outro roteador e esse roteador também usará o mesmo middleware. Posso definir um middleware apenas para um determinado express.Router()
instância?
var app = express()
var router = express.Router()
// predicate the router with a check and bail out when needed
router.use(function (req, res, next) {
if (!req.headers["x-auth"]) return next("router")
next()
})
router.get("/", function (req, res) {
res.send("hello, user!")
})
// use the router and 401 anything falling through
app.use("/admin", router, function (req, res) {
res.sendStatus(401)
})
Respostas:
0 para resposta № 1Para usar algo específico em uma rota, você pode usar a função .all ()
router.route("/")
.all(function (req, res, next){
// do middleware stuff here and call next
next();
})
.get(function (req, res) {
res.send("hello, user!");
});
0 para resposta № 2
Você pode usar o seguinte para aplicar um middleware que será usado pela solicitação all.
Você pode separar route2
abaixo em um novo js
arquivo e exportá-lo de lá. (Exemplo: app.use(require("./routes/particularOne"))
)
(http://expressjs.com/en/4x/api.html#router)
var router = express.Router()
// STEP 1 - defining a new router
var router2 = express.Router()
// STEP 2 - catch a particular route by using the new router
router2.get("/particularOne", function (req,res,next) {
// to do something here
console.log(req.headers)
next()
})
// STEP 3 - Adding the new router into the Express app
app.use(router2)
// use the router and 401 anything falling through
app.use("/admin", router, function (req, res) {
res.sendStatus(401)
})