【问题标题】:using path parameters in nestjs guard在nestjs guard中使用路径参数
【发布时间】:2019-03-16 06:07:03
【问题描述】:

除了从 http 上下文中查找原始请求对象之外,我可以使用其他方式在 nestjs 保护函数中获取路径参数吗?

例如我想做的是

@Patch(':id/someActionName')
  @UseGuards(SomeGuard)
    async activateRole(@Param('id') id,@Body() input: SomeObject): Promise<any> {
        //some logic
        return response;
    }

我的 SomeGuard 会得到 'id' 参数和 'input' 参数的值,输入参数很简单,但我看不到获取 'id' 的简单方法

【问题讨论】:

    标签: javascript nestjs


    【解决方案1】:

    您可以通过从上下文中获取请求来访问路由参数,如下所示:

    canActivate(context: ExecutionContext): boolean {
      const request = context.switchToHttp().getRequest();
      const params = request.params;
      const id = params.id; // automatically parsed
    }
    

    这不在文档中,我遇到了和你完全相同的问题,不得不深入研究请求对象。

    【讨论】:

    • 谢谢,还要了解验证和保护的顺序,所以在我的用例中它是不可用的,因为验证管道在保护之后工作,所以我无法在保护中执行一些检查。否则我将不得不在保护和验证中执行两次。
    猜你喜欢
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2021-10-12
    • 2020-02-10
    • 2012-07-19
    • 2019-12-25
    相关资源
    最近更新 更多