我通过NestJS应用中的APP_INTERCEPTOR
激活了全局缓存。但是现在,我需要在某些路线上忽略它。我该怎么办?
我找到了解决方案。之前,我做了一个CustomHttpCacheInterceptor
来扩展CacheInterceptor
:
@Injectable()
export default class CustomHttpCacheInterceptor extends CacheInterceptor {
httpServer: any;
trackBy(context: ExecutionContext): string | undefined {
const request = context.switchToHttp().getRequest();
const isGetRequest = request.method === 'GET';
const requestURl = request.path;
const excludePaths = ['/my/custom/route'];
if (
!isGetRequest ||
(isGetRequest && excludePaths.some(url => requestURl.includes(url)))
) {
return undefined;
}
return requestURl;
}
}
然后我将其添加为app.module
中的全局缓存拦截器>
//...
providers: [
AppService,
{
provide: APP_INTERCEPTOR,
useClass: CustomHttpCacheInterceptor,
},
],
//...