Angular Universal не кэширует запросы POST с помощью TransferState
Я пытаюсь использовать
ServerStateInterceptor
и
BrowserStateInterceptor
в Angular Universal. Но я не могу получить
POST
запросы кэшируются или отправляются
TransferState
. Это мой код:
За
ServerStateInterceptor
export class ServerStateInterceptor implements HttpInterceptor {
constructor(private transferState: TransferState, private ngZone: NgZone) {}
intercept(req: HttpRequest<any>, next: HttpHandler) {
const cachedData = memoryCache.get(req.url);
if (cachedData) {
this.transferState.set(makeStateKey(req.url), cachedData);
return of(new HttpResponse({ body: cachedData, status: 200 }));
} else {
console.log('---server failed ---', req.url);
}
return next.handle(req).pipe(
tap(event => {
if (event instanceof HttpResponse) {
this.transferState.set(makeStateKey(req.url), event.body);
this.ngZone.runOutsideAngular(() => {
memoryCache.put(req.url, event.body, 1000 * 60);
});
}
})
);
}
}
И для
BrowserStateInterceptor
export class BrowserStateInterceptor implements HttpInterceptor {
constructor(private transferState: TransferState) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (req.method !== 'GET' && req.method !== 'POST') {
return next.handle(req);
}
const storedResponse: string = this.transferState.get(makeStateKey(req.url), null);
if (storedResponse) {
const response = new HttpResponse({ body: storedResponse, status: 200 });
return of(response);
} else {
console.log('---browser failed ---', req.url);
}
return next.handle(req);
}
}
По какой причине когда-либо мой
POST
запросы не возвращаются из
transferState
и я правда не понимаю почему или что делаю не так?
Как мне протестировать? Все
GET
и
POST
запросы отправляются в PHP REST-API. Существует
error_log(...)
. Error_log показывает
GET
запросы разовые. Но
POST
запросы вызываются каждый раз.
Когда я проверяю HTML-код страницы, я вижу, что содержимое POST включено, но не будет использоваться
BrowserStateInterceptor
. Вместо этого полный вызов REST-API выполняется снова и снова.
Кто-нибудь может показать мне, как я могу подать заявку
TransferState
к
POST
запросы тоже.