如何拦截特定请求
Posted
技术标签:
【中文标题】如何拦截特定请求【英文标题】:How to intercept specific request 【发布时间】:2020-09-20 17:45:00 【问题描述】:我正在使用NestJS
和Angular 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 实现对特定请求的拦截,不要所有请求都进行相同的拦截