# Classic http service ###### tags: `Typescript` > Пример HttpService для фронтенда на базе Axios. Из-за отсвутсвия Dependecy injection приходится делать singltone сервисы. ```typescript= import Axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; export class HttpServiceClass { private readonly _instance: AxiosInstance = Axios.create({ withCredentials: true, }); public get axiosRef(): AxiosInstance { return this._instance; } public request<T = any>(config: AxiosRequestConfig): Promise<AxiosResponse<T>> { return this._instance.request<T>(config); } public get<T = any>( url: string, config?: AxiosRequestConfig, ): Promise<AxiosResponse<T>> { return this._instance.get<T>(url, config); } public delete<T = any>( url: string, config?: AxiosRequestConfig, ): Promise<AxiosResponse<T>> { return this._instance.delete(url, config); } public head<T = any>( url: string, config?: AxiosRequestConfig, ): Promise<AxiosResponse<T>> { return this._instance.head(url, config); } public post<T = any, D = any>( url: string, data?: D, config?: AxiosRequestConfig, ): Promise<AxiosResponse<T>> { return this._instance.post(url, data, config); } public put<T = any, D = any>( url: string, data?: D, config?: AxiosRequestConfig, ): Promise<AxiosResponse<T>> { return this._instance.put(url, data, config); } public patch<T = any, D = any>( url: string, data?: D, config?: AxiosRequestConfig, ): Promise<AxiosResponse<T>> { return this._instance.patch(url, data, config); } public extractResponseData<T = any>(res: AxiosResponse): T { return res.data; } } export const HttpService = new HttpServiceClass(); ``` Пример использования ```typescript= import { HttpService } from "../http.service"; import { IPayment } from '../types'; class BillingApiServiceClass { public get http() { return HttpService; } private _buildUrl(path: string): string { return `${process.env.REACT_APP_CORE_API_URL}/api/v1/payments/${path}`; } public async markAsPaid(paymentId: string): Promise<IPayment> { const url = this._buildUrl(paymentId); return this.http.post(url).then(this.http.extractResponseData); } } export const BillingApiService = new BillingApiServiceClass(); ```