import axios, { AxiosRequestConfig } from 'axios'; import { initAjaxHandlersCSRFToken } from './ajax-handlers-csrf-token'; import { initAjaxHandlersParseDates } from './ajax-handlers-parse-dates'; export const initAjaxHandlersCommon = () => { initAjaxHandlersCSRFToken(); initAjaxHandlersParseDates(); axios.interceptors.request.use(config => { setHeaders(config); return config; }); axios.defaults.validateStatus = status => status >= 200 && status < 400; }; function setHeaders(config: AxiosRequestConfig) { if (!isFormData(config)) { config.headers ??= {}; config.headers['Content-Type'] ??= 'application/json;charset=UTF-8'; config.headers.Accept ??= 'application/json'; } } function isFormData({ data }: AxiosRequestConfig) { return data instanceof FormData; }