В нашем приложении мы используем 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. Но является ли это способом продвижения вперед или есть более эффективный путь, и если да, то какой это путь?