93 lines
2.8 KiB
JavaScript
93 lines
2.8 KiB
JavaScript
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<string, string>} 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<string, string>} query - параметры для передачи через query
|
|
*/
|
|
delete = (url, query, config) => {
|
|
return this.request(DELETE, makeUrlWithQuery(url, query), null, config);
|
|
}
|
|
|
|
/**
|
|
* @param {string} url - адрес запроса
|
|
* @param {Object<string, string>} query - параметры для передачи через query
|
|
*/
|
|
head = (url, query, config) => {
|
|
return this.request(HEAD, makeUrlWithQuery(url, query), null, config);
|
|
}
|
|
|
|
/**
|
|
* @param {string} url - адрес запроса
|
|
* @param {Object<string, string>} 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;
|