我尝试在ExpressJS中实现中间件。我遇到一个问题,当我用app.use(mymiddleware)方法添加它时,中间件才有效。但我希望将其与特定路线分开。
这是我的PRroute:
export = (app: any) => {
const endpoint = process.env.API_BASE + "prs";
app.post(endpoint, PR.create);
app.delete(endpoint + "/:id", PR.delete);
app.get(endpoint + "/:id", PR.getOne);
app.get(endpoint, PR.getAll);
app.put(endpoint + "/:id", PR.update);
};
我的目标是像这样工作:
export = (app: any) => {
app.use(User.IsAdmin);
const endpoint = process.env.API_BASE + "prs";
app.post(endpoint, User.IsAdmin, PR.create);
app.delete(endpoint + "/:id", PR.delete);
app.get(endpoint + "/:id", PR.getOne);
app.get(endpoint, PR.getAll);
app.put(endpoint + "/:id", PR.update);
};
但它不起作用。因为我的快递文件看起来像这样:
const routesPR = require("../routes/PRroute")(app);
如果我添加到app.use(User.IsAdmin)方法,但它在每个GET / POST方法之前调用此方法,这是有效的。
是否有任何解决方案可以在不将公共和管理员路由分成不同文件的情况下达到此目的?
感谢您的回答。