【发布时间】:2020-06-23 04:29:17
【问题描述】:
在我们的应用程序中,我们使用 Axios HttpService 向第三方 api 发出一些请求。 因为 bij de api 返回的数据量很大,我们想缓存响应。 在文档中无法找到一些如何执行此操作的示例。 我目前这样做如下:
@Module({
imports: [
HttpModule,
CacheModule.register({
ttl: 15,
store: redisStore,
host: 'localhost',
port: 6379,
})
]
})
export class AppModule {}
我在全局范围内注册了 CacheModule。 然后将其导入我需要的模块中。
在我使用第三方 api 的服务中,我创建了一个拦截器并缓存响应。非常粗糙,仅用于测试。
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 方式,而不是 NestJS 方式。 但这是一种前进的方式,还是有更有效的方式,如果是,那是什么方式?
【问题讨论】: