import {makeUrlWithQuery} from '../utils/urlUtils'; import httpAuthApi from './HttpAuthAPI'; const GET = 'GET'; const POST = 'POST'; const PUT = 'PUT'; const DELETE = 'DELETE'; const HEAD = 'HEAD'; const OPTIONS = 'OPTIONS'; const PATH = 'PATH'; /** * Методы запросов к серверу * @interface MethodType * @type {'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'PATH'} */ /** * Api для выполнения запросов к серверу * @class HttpApi */ class HttpApi { /** * Общий метод выполнения запроса * @param {MethodType} method - метод запроса * @param {string} url - адрес запроса * @param {Object} body - тело запроса */ request = (method, url, data, config) => { return httpAuthApi.request({...config, method, url, data}); } /** * @param {string} url - адрес запроса * @param {Object} query - параметры для передачи через query */ get = (url, query, config) => { return this.request(GET, makeUrlWithQuery(url, query), null, config); } /** * @param {string} url - адрес запроса * @param {Object} body - тело запроса */ post = (url, body, config) => { return this.request(POST, url, body, config); } /** * @param {string} url - адрес запроса * @param {Object} body - тело запроса */ put = (url, body, config) => { return this.request(PUT, url, body, config); } /** * @param {string} url - адрес запроса * @param {Object} query - параметры для передачи через query */ delete = (url, query, config) => { return this.request(DELETE, makeUrlWithQuery(url, query), null, config); } /** * @param {string} url - адрес запроса * @param {Object} query - параметры для передачи через query */ head = (url, query, config) => { return this.request(HEAD, makeUrlWithQuery(url, query), null, config); } /** * @param {string} url - адрес запроса * @param {Object} query - параметры для передачи через query */ options = (url, query, config) => { return this.request(OPTIONS, makeUrlWithQuery(url, query), null, config); } /** * @param {string} url - адрес запроса * @param {Object} body - тело запроса */ path = (url, body, config) => { return this.request(PATH, url, body, config); } } const http = new HttpApi(); export default http;