NestJS控制器中的路由超载了吗?

时间:2019-02-11 17:29:14

标签: typescript nestjs

在NestJS应用程序中是否有一种漂亮的方法来创建重载路由?我有一些想法,但也许我正在发明一个轮子。我找不到任何现成的方法...

我说的是这样的 (让https://github.com/nestjs/nest/blob/master/sample/01-cats-app/src/cats/cats.controller.ts为起点):

@Get()
async findAll(): Promise<Cat[]> {
  return this.catsService.findAll();
}

@Get()
@Roles('admin')
async findAllAdmin(): Promise<Cat[]> {
  return this.catsService.findAllAdmin();
}

换句话说,我想要两条具有相同URL的路由,但要用其他一些值来区分(例如此处的角色)。

我的想法是创建自己的装饰器,而不是获取,后者将填充一些权重图,并为每个重载方法分配唯一路径。然后,添加中间件,该中间件将从请求中获取参数,将其与map进行比较,并进行内部重定向(使用next('route')req.app.handle(req, res))到适当的新路径。

但是在这种方法中,如果应该使用其中一种方法的 AuthGuard 对他们进行身份验证,那么我就无法从请求中获取用户...

0 个答案:

没有答案