Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>FastAPI client</title>
- <style>
- td {
- padding: 5px;
- }
- button {
- margin: 5px;
- }
- </style>
- </head>
- <body>
- <h2>Список пользователей</h2>
- <div>
- <input type="hidden" id="userId" />
- <p>
- Имя:<br />
- <input id="userName" />
- </p>
- <p>
- Возраст:<br />
- <input id="userAge" type="number" />
- </p>
- <p>
- <button id="saveBtn">Сохранить</button>
- <button id="resetBtn">Сбросить</button>
- </p>
- </div>
- <table>
- <thead>
- <tr>
- <th>Имя</th>
- <th>Возраст</th>
- <th></th>
- </tr>
- </thead>
- <tbody>
- </tbody>
- </table>
- <script>
- // Получение всех пользователей
- async function getUsers() {
- // отправляет запрос и получаем ответ
- const response = await fetch("/api/users", {
- method: "GET",
- headers: { "Accept": "application/json" }
- });
- // если запрос прошел нормально
- if (response.ok === true) {
- // получаем данные
- const users = await response.json();
- const rows = document.querySelector("tbody");
- // добавляем полученные элементы в таблицу
- users.forEach(user => rows.append(row(user)));
- }
- }
- // Получение одного пользователя
- async function getUser(id) {
- const response = await fetch(`/api/users/${id}`, {
- method: "GET",
- headers: { "Accept": "application/json" }
- });
- if (response.ok === true) {
- const user = await response.json();
- document.getElementById("userId").value = user.id;
- document.getElementById("userName").value = user.name;
- document.getElementById("userAge").value = user.age;
- }
- else {
- // если произошла ошибка, получаем сообщение об ошибке
- const error = await response.json();
- console.log(error.message); // и выводим его на консоль
- }
- }
- // Добавление пользователя
- async function createUser(userName, userAge) {
- const response = await fetch("api/users", {
- method: "POST",
- headers: { "Accept": "application/json", "Content-Type": "application/json" },
- body: JSON.stringify({
- name: userName,
- age: parseInt(userAge, 10)
- })
- });
- if (response.ok === true) {
- const user = await response.json();
- document.querySelector("tbody").append(row(user));
- }
- else {
- const error = await response.json();
- console.log(error.message);
- }
- }
- // Изменение пользователя
- async function editUser(userId, userName, userAge) {
- const response = await fetch("api/users", {
- method: "PUT",
- headers: { "Accept": "application/json", "Content-Type": "application/json" },
- body: JSON.stringify({
- id: userId,
- name: userName,
- age: parseInt(userAge, 10)
- })
- });
- if (response.ok === true) {
- const user = await response.json();
- document.querySelector(`tr[data-rowid='${user.id}']`).replaceWith(row(user));
- }
- else {
- const error = await response.json();
- console.log(error.message);
- }
- }
- // Удаление пользователя
- async function deleteUser(id) {
- const response = await fetch(`/api/users/${id}`, {
- method: "DELETE",
- headers: { "Accept": "application/json" }
- });
- if (response.ok === true) {
- const user = await response.json();
- document.querySelector(`tr[data-rowid='${user.id}']`).remove();
- }
- else {
- const error = await response.json();
- console.log(error.message);
- }
- }
- // сброс данных формы после отправки
- function reset() {
- document.getElementById("userId").value =
- document.getElementById("userName").value =
- document.getElementById("userAge").value = "";
- }
- // создание строки для таблицы
- function row(user) {
- const tr = document.createElement("tr");
- tr.setAttribute("data-rowid", user.id);
- const nameTd = document.createElement("td");
- nameTd.append(user.name);
- tr.append(nameTd);
- const ageTd = document.createElement("td");
- ageTd.append(user.age);
- tr.append(ageTd);
- const linksTd = document.createElement("td");
- const editLink = document.createElement("button");
- editLink.append("Изменить");
- editLink.addEventListener("click", async () => await getUser(user.id));
- linksTd.append(editLink);
- const removeLink = document.createElement("button");
- removeLink.append("Удалить");
- removeLink.addEventListener("click", async () => await deleteUser(user.id));
- linksTd.append(removeLink);
- tr.appendChild(linksTd);
- return tr;
- }
- // сброс значений формы
- document.getElementById("resetBtn").addEventListener("click", () => reset());
- // отправка формы
- document.getElementById("saveBtn").addEventListener("click", async () => {
- const id = document.getElementById("userId").value;
- const name = document.getElementById("userName").value;
- const age = document.getElementById("userAge").value;
- if (id === "")
- await createUser(name, age);
- else
- await editUser(id, name, age);
- reset();
- });
- // загрузка пользователей
- getUsers();
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement