Fetch API
Цель: изучение формата обмена данными JSON, возможностей Fetch API.
Содержание и порядок выполнения лабораторной работы:
- Изучить работу с форматом данных JSON и глобальным объектом, изучить возможности Fetch API (
fetch()
,Response
). - Создать от ветки main ветку lab6.
- Создать документ html с H1 заголовком «ФИО - Лабораторная работа №6».
- В документе html добавить две секции: для галереи и отправки температуры.
- Создать компонент всплывающего уведомления (toasts), который после отображается на странице внизу справа и показывает информацию. Закрывается он по нажатию на соответствующую кнопку. Отображение и скрытие должно происходить плавно. Также он должен иметь разные стили для отображения ошибки (красный фон) и сообщения (зеленый фон). Не забывайте про контрастность.
- Сервер с документацией.
Галерея
- В галерее, используя AJAX, после загрузки страницы отправить запрос на получение изображений и отобразить их на странице. Если возникают какие-либо ошибки осуществить 3 повторных запроса с небольшим интервалом. Если данные так и не удалось получить, то оповестить об этом пользователя с помощью компонента toast. На время пока ожидается ответ от сервера, показать загрузчик, после получения ответа загрузчик должен замениться на контент или должно появится сообщение об ошибке. Если пришел пустой массив, то на месте галереи должен отображаться текст “Изображения не найдены”.
- В начало этой же секции, добавить кнопку обновления, при нажатии на которую отправляет запрос на получение изображений, а работа с ошибками сохраняется как в предыдущем пункте.
- Все блоки изображений с подписями должны выглядеть одинаково, не смотря на размер изображения или длину текста. В один ряд помещается 4-изображения для этого используйте grid.
Температура
- В этой секции добавить форму для ввода номера аудитории и температуры. Не забудьте про доступность.
- Для отправки данных из формы предотвратите стандартное поведение формы, сформируйте собственный post-запрос с помощью fetch. Не забудьте в заголовках указать тип передаваемого контента (Content-Type) и отправить данные с правильными типами (строка и число).
- На время ожидания ответа от сервера заблокируйте возможность отправлять новые запросы из формы.
- При успешной обработке данных на сервере с помощью toast выведите сообщение из ответа и очистите форму. При ошибке, выведите сообщение ошибки в toast, но форму не очищайте.
Требования к JS:
- HTML код валиден.
- Отсутствуют ошибки ESLint в панели Problems в VS Code.
- Отсутствуют ошибки в консоли браузера при работе с веб-страницей.
Результаты выполнения лабораторной работы:
Результаты работы проверены наставником.
Статическая веб-страница на хостинге, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.
Источники
- doka - fetch()
- Fetch API
- RFC8259: The JavaScript Object Notation (JSON) Data Interchange Format
- ECMA-404: The JSON data interchange syntax
- ECMA-262: JSON5
Вопросы для защиты
- Суть AJAX.
- Что такое и как работает Fetch API?
- На базе чего построен Fetch API?
- Какие есть свойства и методы у объекта Response?
- Как получить данные из тела запроса?
- Какие параметры у функции fetch?
- Формат JSON?