在 express 中为路由路由使用前缀

Use prefix for route routes in express

如何在索引中定义前缀或每个模块至少定义一个前缀?

目前我有这个:

角色模块

export class RoleRoutes extends RouteConfig {
  

  constructor(app: Application) {
    super(app, "/role");
  }

  configureRoutes() {
    this.app.route(process.env.PREFIX + this.getName() + '/:id').get([JWT.authenticateJWT, RoleController.getOne.bind(RoleController)]);
    this.app.route(process.env.PREFIX + this.getName()).get([JWT.authenticateJWT, RoleController.getAll.bind(RoleController)]);
    this.app.route(process.env.PREFIX + this.getName()).post([JWT.authenticateJWT, RoleController.create.bind(RoleController)]);
    this.app.route(process.env.PREFIX + this.getName()).put([JWT.authenticateJWT, RoleController.update.bind(RoleController)]);
    return this.app;
  }
}

索引

const routes: Array<RouteConfig> = [];
routes.push(new RoleRoutes(app));

我看到了不同的解决方案,但它们与我的结构不匹配。

使用路由器。 在顶部添加

const express = require('express')

(或者无论如何你导入东西) 然后在你的定义中

configureRoutes() {
  var router = express.Router();
  router.use(JWT.authenticateJWT);

  router.get('/:id', RoleController.getOne.bind(RoleController))
  router.get('/', RoleController.getAll.bind(RoleController));
  router.post('/', RoleController.create.bind(RoleController));
  router.put('/', RoleController.update.bind(RoleController));

  this.app.use(process.env.PREFIX + this.getName(), router)
  return this.app;
}