如何在NestJs中忽略某些路由上的全局缓存

问题描述 投票:1回答:1

我通过NestJS应用中的APP_INTERCEPTOR激活了全局缓存。但是现在,我需要在某些路线上忽略它。我该怎么办?

typescript caching interceptor nestjs
1个回答
0
投票

我找到了解决方案。之前,我做了一个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,
    },
  ],
//...
© www.soinside.com 2019 - 2024. All rights reserved.