Files
storage-service-ui/src/api/HttpAPI.js

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, body, config) => {
return httpAuthApi.request({...config, method, url, body});
}
/**
* @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;