如何拦截特定请求

时间:2020-06-02 09:31:43

标签: javascript angular typescript nestjs

我正在使用NestJSAngular 2,它们与Interceptors的工作方式相似。我想找到最佳实践,以确定一些特定的要求来做一些额外的工作。

要声明Interceptor(谁会听Controller(在NestJS中),我应该使用以下逻辑:

@UseInterceptors(ObjectsInterceptor)
@Controller('objects')
export class ObjectsController {

  @Get()
  async findAll(): Promise<ObjectDto[]> {
    // Request which should be intercepted
    ...
  }

  @Get(':slug')
  async findOne(@Params('slug') slug: string): Promise<ObjectDto> {
    // Request which shouldn't be intercepted 
    ...
  }
}

Interceptor中:

@Injectable()
export class ObjectsInterceptor implements NestInterceptor {

  intercept(context: ExecutionContext, next: CallHandler<any>): Observable<any> {
    // Some logic to detect specific request
    return next.handle();
  }
}

可能我用错误的方式解决了问题

1 个答案:

答案 0 :(得分:1)

将装饰器放在方法上方,而不是类

  @Get()
  @UseInterceptors(ObjectsInterceptor)
  async findAll(): Promise<ObjectDto[]> {
    // Request which should be intercepted
    ...
  }