【发布时间】:2020-10-16 20:02:36
【问题描述】:
如何使用 Angular HttpInterceptor 缓存一段时间内的获取请求?我想在缓存到达服务器之前得到响应。
例如:
-
第一个请求从服务器获取数据
-
将响应缓存 60 秒
-
第二个请求从缓存中获取数据
-
如果第三个请求在 60 秒后从服务器缓存中获取数据
@Injectable() export class JwtInterceptor implements HttpInterceptor { userDetails: any; constructor(public router: Router) { } intercept( request: HttpRequest<any>, next: HttpHandler ): Observable<HttpEvent<any>> { if (!request.url.includes('auth/login') && this.userDetails) { // TODO: If no internet connectivity logout from the session // For multi tenancy tenant ID is in auth token so no need to pass extra param just pass auth token request = request.clone({ setHeaders: { 'x-access-token': CommonUtils.getCookie('token') } }); } return next.handle(request).pipe( map((event: HttpEvent<any>) => { return event; }), catchError((error: HttpErrorResponse) => { let data = {}; data = { reason: error ? error : '', status: error.status }; return throwError(error); }) ); } }
【问题讨论】:
-
分享你的尝试会很有帮助
-
我刚刚创建了一个 HttpInterceptor 来为每个请求附加
x-access-token标头,所以我想知道有没有可能使用 HttpInterceptor 缓存请求的方法 -
请分享拦截器的代码
-
更新问题,请查收
标签: angular typescript angular-http-interceptors