Кеширование топора ios httpService в NestJS - PullRequest
0 голосов
/ 11 марта 2020

В нашем приложении мы используем HttpService Ax ios, чтобы сделать запрос к стороннему API. Поскольку объем данных, возвращаемых bij de api, настолько велик, мы хотели бы кэшировать ответы. В документации не удалось найти несколько примеров того, как это сделать. В настоящее время я делаю это следующим образом:

@Module({
  imports: [
    HttpModule,
    CacheModule.register({
      ttl: 15,
      store: redisStore,
      host: 'localhost',
      port: 6379,
    })
  ]
})
export class AppModule {}

Я регистрирую CacheModule глобально. Затем импортируйте его в модуль, где он мне нужен.

В сервисе, где я использую сторонний API, я создаю перехватчик, где я go и кеширую ответы. Очень грубый и только для тестирования.

constructor(private readonly httpService: HttpService,
              private readonly cache: CacheStore) {
    httpService.axiosRef.interceptors.response.use((response) => {
      cache.set(response.request.url, response.data);
      return response;
    }, error => Promise.reject(error));
  }

Прежде всего, это не работает, потому что CACHE_MANAGER по какой-то причине не может быть импортирован в CacheModule. Во-вторых, это более Node.js способ создания таких перехватчиков, а не способ Nest JS. Но является ли это способом продвижения вперед или есть более эффективный путь, и если да, то какой это путь?

...