Internet-programming_PIbd-2.../Library/js/lines-rest-api.js

119 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.

// модуль для работы с REST API сервера
// адрес сервера
const serverUrl = "http://localhost:8081";
// обращение к серверу для получения списка авторов (get)
export async function getAllAuthors() {
const response = await fetch(`${serverUrl}/authors`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для получения всех категорий книг (get)
export async function getAllCategories() {
const response = await fetch(`${serverUrl}/categories`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для получения списка авторов и категорий (get)
export async function getAllCategoriesAndAuthors() {
const categoriesPromise = getAllCategories();
const authorsPromise = getAllAuthors();
let responses = await Promise.allSettled([categoriesPromise, authorsPromise]);
responses = responses.map((response) => response.value);
return responses;
}
// обращение к серверу для получения всех записей (get)
export async function getAllBooks() {
const response = await fetch(`${serverUrl}/books?_expand=categories&_expand=authors`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для получения записи по первичному ключу (id) (get)
// id передается в качестве части пути URL get-запроса
export async function getBook(id) {
const response = await fetch(`${serverUrl}/books/${id}?_expand=categories&_expand=authors`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для создания записи (post)
// объект отправляется в теле запроса (body)
export async function addBook(categoriesId, name, authorsId, year, image) {
const bookObject = createBookObject(categoriesId, name, authorsId, year, image);
const options = {
method: "POST",
body: JSON.stringify(bookObject),
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
};
const response = await fetch(`${serverUrl}/books`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для обновления записи по id (put)
// объект отправляется в теле запроса (body)
// id передается в качестве части пути URL get-запроса
export async function updateBook(id, categoriesId, name, authorsId, year, image) {
const bookObject = createBookObject(categoriesId, name, authorsId, year, image);
const options = {
method: "PUT",
body: JSON.stringify(bookObject),
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
};
const response = await fetch(`${serverUrl}/books/${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}/books/${id}`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// функция возвращает объект нужной структуры для отправки на сервер
function createBookObject(categoriesId, name, authorsId, year, image) {
return {
categoriesId,
authorsId,
name,
year,
image,
};
}