如何拦截特定请求

Posted

技术标签:

【中文标题】如何拦截特定请求【英文标题】:How to intercept specific request 【发布时间】:2020-09-20 17:45:00 【问题描述】:

我正在使用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();
  

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

【问题讨论】:

我几乎可以肯定你可以将装饰器放在你想要拦截的请求之上,而不是整个控制器 @MorKadosh 没错,非常感谢! 【参考方案1】:

只需将装饰器放在方法之上而不是类

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

【讨论】:

以上是关于如何拦截特定请求的主要内容,如果未能解决你的问题,请参考以下文章

axios CancelToken 实现对特定请求的拦截,不要所有请求都进行相同的拦截

nginx拦截请求修改返回数据

如何向 feign 客户端添加请求拦截器?

如何制定filter不去拦截某类的url?

如何让Spring MVC DispatchServlet拦截所有的.do请求,比如/system/*.do!

用程序拦截器拦截请求