import Axios, { AxiosInstance, CreateAxiosDefaults, AxiosResponse, AxiosRequestConfig, AxiosHeaderValue } from "axios"; export default class Request { public request: AxiosInstance constructor(config: CreateAxiosDefaults, authHeaders: () => { [key: string]: AxiosHeaderValue }) { this.request = Axios.create(config) this.request.interceptors.request.use((config) => { config.headers.set(authHeaders()) return config; }) } async post(url: string, data?: D, config?: AxiosRequestConfig): Promise { return this.request.post(url, data, config).then(res => res.data) } async postForm(url: string, data: D, config?: AxiosRequestConfig): Promise { return this.request.post(url, data, config).then(res => res.data) } async get(url: string, config?: AxiosRequestConfig): Promise { return this.request.get(url, config).then(res => res.data) } async put(url: string, data?: D, config?: AxiosRequestConfig): Promise { return this.request.put(url, data, config).then(res => res.data) } async delete(url: string, config?: AxiosRequestConfig): Promise { return this.request.delete(url, config).then(res => res.data) } }