HM-32. Пропатчить api под новый бекенд (#7)
This commit is contained in:
@ -45,7 +45,6 @@
|
|||||||
"array-bracket-spacing": ["error", "never"],
|
"array-bracket-spacing": ["error", "never"],
|
||||||
"block-spacing": ["error", "never"],
|
"block-spacing": ["error", "never"],
|
||||||
"brace-style": ["error", "1tbs", {"allowSingleLine": true}],
|
"brace-style": ["error", "1tbs", {"allowSingleLine": true}],
|
||||||
"camelcase": "error",
|
|
||||||
"capitalized-comments": ["error"],
|
"capitalized-comments": ["error"],
|
||||||
"comma-dangle": ["error", "only-multiline"],
|
"comma-dangle": ["error", "only-multiline"],
|
||||||
"comma-spacing": ["error", {"before": false, "after": true}],
|
"comma-spacing": ["error", {"before": false, "after": true}],
|
||||||
|
|||||||
@ -2,20 +2,45 @@ import {v4 as uuidv4} from 'uuid';
|
|||||||
|
|
||||||
import StorageServiceApi from './StorageServiceAPI';
|
import StorageServiceApi from './StorageServiceAPI';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @interface StoreListElement
|
||||||
|
* @type {Object}
|
||||||
|
* @property {string} _id - уникальный id элемента
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс создания api для списков данных
|
* Класс создания api для списков данных
|
||||||
*
|
|
||||||
* @class StorageListApi
|
* @class StorageListApi
|
||||||
* @param {string} key - уникальный ключ для api, который будет записан в сервисе
|
* @param {string} key - уникальный ключ для api, который будет записан в сервисе
|
||||||
|
* @param {string} description - описание api
|
||||||
|
* @param {string} author - автор api
|
||||||
|
* @param {string} service_name - имя сервиса, для которого используется api
|
||||||
*/
|
*/
|
||||||
class StorageListApi {
|
class StorageListApi {
|
||||||
constructor (key) {
|
constructor (key, description, author, service_name) {
|
||||||
|
/**
|
||||||
|
* Ключ api
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
this.key = key;
|
this.key = key;
|
||||||
|
/**
|
||||||
|
* @type {StorageServiceApi}
|
||||||
|
*/
|
||||||
this.api = new StorageServiceApi();
|
this.api = new StorageServiceApi();
|
||||||
|
this.api.create({key, description, author, service_name, value: []});
|
||||||
|
/**
|
||||||
|
* @type {Object}
|
||||||
|
* @property {string} description - описание api
|
||||||
|
* @property {string} author - автор api
|
||||||
|
* @property {string} service_name - имя сервиса, для которого используется api
|
||||||
|
*/
|
||||||
|
this.metaInfo = {
|
||||||
|
description, author, service_name
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array<{_id: string}>} list - список элементов по которым осуществялется поиск
|
* @param {StoreListElement[]} list - список элементов по которым осуществялется поиск
|
||||||
* @param {string} _id - _id искомого элемента
|
* @param {string} _id - _id искомого элемента
|
||||||
* @returns {number} - Возвращает индекс искомого эллемента по _id
|
* @returns {number} - Возвращает индекс искомого эллемента по _id
|
||||||
*/
|
*/
|
||||||
@ -24,15 +49,15 @@ class StorageListApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array<{_id: string}>} list - новый список элементов
|
* @param {StoreListElement[]} list - новый список элементов
|
||||||
* @returns {Promise<Array<{_id: string}>>} - возвращает обновленный список элементов
|
* @returns {Promise<Array<StoreListElement[]>} - возвращает обновленный список элементов
|
||||||
*/
|
*/
|
||||||
_updateList = async (list) => {
|
_updateList = async (list) => {
|
||||||
return await this.api.createOrUpdate(this.key, list);
|
return await this.api.update(this.key, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {Promise<Array<{_id: string}>>} - возвращает все элементы списка
|
* @returns {Promise<StoreListElement[]>} - возвращает все элементы списка
|
||||||
*/
|
*/
|
||||||
request = async () => {
|
request = async () => {
|
||||||
const data = await this.api.find(this.key);
|
const data = await this.api.find(this.key);
|
||||||
@ -41,7 +66,7 @@ class StorageListApi {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} _id - _id искомого элемента списка
|
* @param {string} _id - _id искомого элемента списка
|
||||||
* @returns {Promise<{_id: string}>} - возвращает элемент списка или генерит ошибку
|
* @returns {Promise<StoreListElement>} - возвращает элемент списка или генерит ошибку
|
||||||
*/
|
*/
|
||||||
find = async (_id) => {
|
find = async (_id) => {
|
||||||
const list = await this.request();
|
const list = await this.request();
|
||||||
@ -53,8 +78,8 @@ class StorageListApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {object} data - элемент списка
|
* @param {Object} data - элемент списка
|
||||||
* @returns {Promise<{_id: string}>} - Возвращает вновь созданный элемент с уникальным полем _id
|
* @returns {Promise<StoreListElement>} - Возвращает вновь созданный элемент с уникальным полем _id
|
||||||
*/
|
*/
|
||||||
create = async (data) => {
|
create = async (data) => {
|
||||||
const list = await this.request();
|
const list = await this.request();
|
||||||
@ -68,8 +93,8 @@ class StorageListApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {{_id: string}} data - элемент списка
|
* @param {StoreListElement} data - элемент списка
|
||||||
* @returns {Promise<{_id: string}>} - Возвращает обновленный элемент списка
|
* @returns {Promise<StoreListElement>} - Возвращает обновленный элемент списка
|
||||||
*/
|
*/
|
||||||
update = async (data) => {
|
update = async (data) => {
|
||||||
const list = await this.request();
|
const list = await this.request();
|
||||||
|
|||||||
@ -2,6 +2,16 @@ import axios from 'axios';
|
|||||||
|
|
||||||
import {API_URL, ENDPOINT} from './consts';
|
import {API_URL, ENDPOINT} from './consts';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @interface Store
|
||||||
|
* @type {Object}
|
||||||
|
* @property {string} key - ключ апи
|
||||||
|
* @property {unknown} value - любое значение апи
|
||||||
|
* @property {string} description - описание апи
|
||||||
|
* @property {string} service_name - имя сервиса в котором используется апи
|
||||||
|
* @property {string} author - автор, который создал апи
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс для работы с store-service api
|
* Класс для работы с store-service api
|
||||||
* @class
|
* @class
|
||||||
@ -10,8 +20,8 @@ class StorageServiceApi {
|
|||||||
URL = `${API_URL}${ENDPOINT}`;
|
URL = `${API_URL}${ENDPOINT}`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Запрос полного списка всех пар ключ-значение
|
* Запрос полного списка всех api
|
||||||
* @returns {Promise<Array<{key: string, value: unknown}>>} - Возвращает список всех пар ключ-значение
|
* @returns {Promise<Store[]>} - Возвращает список всех api
|
||||||
*/
|
*/
|
||||||
request = async () => {
|
request = async () => {
|
||||||
const {data} = await axios.get(this.URL);
|
const {data} = await axios.get(this.URL);
|
||||||
@ -19,9 +29,9 @@ class StorageServiceApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Запрос одной пары ключ-значение
|
* Запрос api по ключу
|
||||||
* @param {string} key - ключ хранилища в api
|
* @param {string} key - ключ хранилища в api
|
||||||
* @returns {Promise<unknown>} - Возвращает значение по указанному ключу
|
* @returns {Promise<Store>} - Возвращает api по указанному ключу
|
||||||
*/
|
*/
|
||||||
find = async (key) => {
|
find = async (key) => {
|
||||||
const {data} = await axios.get(`${this.URL}/${key}`);
|
const {data} = await axios.get(`${this.URL}/${key}`);
|
||||||
@ -29,20 +39,29 @@ class StorageServiceApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Создание или обновление пары ключ-значение
|
* Создание api
|
||||||
* @param {string} key - ключ хранилища в api
|
* @param {Store} createData - объект создания api
|
||||||
* @param {unknown} value - значение, которое будет хранится под указанным ключом
|
* @returns {Promise<Store>} - Возвращает вновь созданный элемент
|
||||||
* @returns {Promise<unknown>} - возвращает вновь созданный элемент
|
|
||||||
*/
|
*/
|
||||||
createOrUpdate = async (key, value) => {
|
create = async (createData) => {
|
||||||
const {data} = await axios.post(this.URL, {key, value});
|
const {data} = await axios.post(this.URL, createData);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Удаление пары ключ-значение
|
* Обновление api
|
||||||
|
* @param {Store} updateData - объект обновления api
|
||||||
|
* @returns {Promise<Store>} - Возвращает обновленный элемент
|
||||||
|
*/
|
||||||
|
update = async (updateData) => {
|
||||||
|
const {data} = await axios.put(this.URL, updateData);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Удаление api по ключу
|
||||||
* @param {string} key - ключ хранилища api
|
* @param {string} key - ключ хранилища api
|
||||||
* @returns {Promise<string>} - возвращает 'ok', если удаление было выполнено
|
* @returns {Promise<Store>} - Возвращает удаленный элемент
|
||||||
*/
|
*/
|
||||||
remove = async (key) => {
|
remove = async (key) => {
|
||||||
const {data} = await axios.delete(`${this.URL}/${key}`);
|
const {data} = await axios.delete(`${this.URL}/${key}`);
|
||||||
|
|||||||
42
store.http
Normal file
42
store.http
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Запрос всех пар ключей апи
|
||||||
|
GET http://vigdorov.ru:4001/store HTTP/1.1
|
||||||
|
|
||||||
|
###
|
||||||
|
// Запрос апи по ключу
|
||||||
|
GET http://vigdorov.ru:4001/store/testApi HTTP/1.1
|
||||||
|
|
||||||
|
###
|
||||||
|
// Создание нового апи
|
||||||
|
POST http://vigdorov.ru:4001/store HTTP/1.1
|
||||||
|
content-type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"key": "testApi",
|
||||||
|
"value": {
|
||||||
|
"name": "ivan",
|
||||||
|
"age": 16
|
||||||
|
},
|
||||||
|
"description": "тестовое апи",
|
||||||
|
"service_name": "test-api",
|
||||||
|
"author": "vigdorov"
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
// Обновление существующего апи
|
||||||
|
PUT http://vigdorov.ru:4001/store HTTP/1.1
|
||||||
|
content-type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"key": "testApi",
|
||||||
|
"value": {
|
||||||
|
"name": "ivan23",
|
||||||
|
"age": 22
|
||||||
|
},
|
||||||
|
"description": "тестовое апи",
|
||||||
|
"service_name": "test-api",
|
||||||
|
"author": "vigdorov23422"
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
// Удаление апи
|
||||||
|
DELETE http://vigdorov.ru:4001/store/testApi HTTP/1.1
|
||||||
Reference in New Issue
Block a user