PIbd-21_Zhirnova_A._E._Inte.../3 proba/js/lines-rest-api.js
2023-12-22 11:28:50 +03:00

118 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* eslint-disable linebreak-style */
// модуль для работы с REST API сервера
// адрес сервера
const serverUrl = "http://localhost:8081";
// функция возвращает объект нужной структуры для отправки на сервер
// eslint-disable-next-line max-len
function createLineObject(_name, _authorsType, _genresType, _year, _description, _count, _date, _image) {
return {
nameBook: _name,
authorsId: _authorsType,
genresId: _genresType,
year: _year,
description: _description,
count: _count,
date: _date,
image: _image,
};
}
/// обращение к серверу для получения всех типов товара (get)
export async function getAllAuthorTypes() {
const response = await fetch(`${serverUrl}/authors`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
export async function getAllGengeTypes() {
const response = await fetch(`${serverUrl}/genres`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для получения всех записей (get)
export async function getAllLines() {
const response = await fetch(`${serverUrl}/lines?_expand=authors&_expand=genres`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для получения записи по первичному ключу (id) (get)
// id передается в качестве части пути URL get-запроса
export async function getLine(id) {
const response = await fetch(`${serverUrl}/lines/${id}?_expand=genres&_expand=authors`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для создания записи (post)
// объект отправляется в теле запроса (body)
// eslint-disable-next-line max-len
export async function createLine(_name, _authorsType, _genresType, _year, _description, _count, _date, _image) {
// eslint-disable-next-line max-len
const itemObject = createLineObject(_name, _authorsType, _genresType, _year, _description, _count, _date, _image);
const options = {
method: "POST",
body: JSON.stringify(itemObject),
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
};
const response = await fetch(`${serverUrl}/lines`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для обновления записи по id (put)
// объект отправляется в теле запроса (body)
// id передается в качестве части пути URL get-запроса
// eslint-disable-next-line max-len
export async function updateLine(id, _name, _authorsType, _genresType, _year, _description, _count, _date, _image) {
// eslint-disable-next-line max-len
const itemObject = createLineObject(_name, _authorsType, _genresType, _year, _description, _count, _date, _image);
const options = {
method: "PUT",
body: JSON.stringify(itemObject),
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
};
const response = await fetch(`${serverUrl}/lines/${id}`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для удаления записи по id (delete)
// id передается в качестве части пути URL get-запроса
export async function deleteLine(id) {
const options = {
method: "DELETE",
};
const response = await fetch(`${serverUrl}/lines/${id}`, options);
if (!response.ok) {
throw response.statusText;
}
await response.json();
location.reload();
}