Tools >> Ajax >> Overview ||10
import { html } from '@lion/core';
import { renderLitAsNode } from '@lion/helpers';
import {
ajax,
AjaxClient,
cacheRequestInterceptorFactory,
cacheResponseInterceptorFactory,
} from '@lion/ajax';
import '@lion/helpers/define';
const getCacheIdentifier = () => {
let userId = localStorage.getItem('lion-ajax-cache-demo-user-id');
if (!userId) {
localStorage.setItem('lion-ajax-cache-demo-user-id', '1');
userId = '1';
}
return userId;
};
const cacheOptions = {
useCache: true,
timeToLive: 1000 * 60 * 10,
};
ajax.addRequestInterceptor(cacheRequestInterceptorFactory(getCacheIdentifier, cacheOptions));
ajax.addResponseInterceptor(cacheResponseInterceptorFactory(getCacheIdentifier, cacheOptions));
ajax
is a small wrapper around fetch
which:
- Allows globally registering request and response interceptors
- Throws on 4xx and 5xx status codes
- Prevents network request if a request interceptor returns a response
- Supports a JSON request which automatically encodes/decodes body request and response payload as JSON
- Adds accept-language header to requests based on application language
- Adds XSRF header to request if the cookie is present
Installation
npm i --save @lion/ajax
Relation to fetch
ajax
delegates all requests to fetch. ajax.request
and ajax.requestJson
have the same function signature as window.fetch
, you can use any online resource to learn more about fetch. MDN is a great start.