【问题标题】:Same endpoint for differente controllers in NestJSNestJS 中不同控制器的相同端点
【发布时间】:2022-11-23 20:30:40
【问题描述】:

希望有人可以帮助我。我是 NestJs 的新手

我需要根据标头请求中收到的信息为不同的控制器使用相同的路径。

现在我在我的 app.controller.ts 中使用这段代码来拦截和重定向,但我只能将它用于 Get 请求,不能用于 Post、Put、Delete 等。

export class AppController {
  @Get(':endpoint')
  @Post(':endpoint')
  @Patch(':endpoint')
  @Put(':endpoint')
  @Delete(':endpoint')
  redirect(@Param() param, @Headers('authorization') bearerToken, @Res() res) {
    const entity = getEntityFromToken(bearerToken);

    return res.redirect(`/${entity}s/${param.endpoint}`);
  }
}

无论如何我可以做到这一点?这个想法是当有人发出请求时,我从我的令牌中提取信息并调用适当的控制器。我应该使用动态模块吗?我不确定如何。

谢谢!!

我试过使用 res.redirect 但我认为只适用于 Get 方法。 这个想法是当有人发出请求时,我从我的令牌中提取信息并根据它调用适当的控制器。

【问题讨论】:

    标签: nestjs


    【解决方案1】:

    如果你想对不同的 HTTP 方法使用相同的端点/路径,你可以添加多个具有相同端点(url)和适当的 HTTP 方法装饰器的方法。例如。,

    export class AppController {
      @Get(':endpoint')
      getEndpoint(@Param() param, @Headers('authorization') bearerToken, @Res() res) {
        // GET specific code
      }
    
      @Post(':endpoint')
      postEndpoint(@Param() param, @Headers('authorization') bearerToken, @Res() res) {
        // POST specific code
      }
    
      @Patch(':endpoint')
      patchEndpoint(@Param() param, @Headers('authorization') bearerToken, @Res() res) {
        // PATCH specific code
      }
    
      @Put(':endpoint')
      putEndpoint(@Param() param, @Headers('authorization') bearerToken, @Res() res) {
        // PUT specific code
      }
    
    
      @Delete(':endpoint')
      deleteEndpoint(@Param() param, @Headers('authorization') bearerToken, @Res() res){
        // DELETE specific code
      }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2013-09-24
      • 2015-06-20
      • 2016-03-29
      • 1970-01-01
      相关资源
      最近更新 更多