Перейти к содержимому

Освоение JavaScript: Использование Fetch API для создания надежных веб-приложений

Fetch API — это ключевая функция в JavaScript, которая позволяет разработчикам выполнять сетевые запросы с использованием промисов, поддерживающих современный асинхронный подход к веб-разработке. В этом руководстве на практических примерах показано, как внедрить Fetch API, используя API JSONPlaceholder для демонстрации его возможностей на реальных задачах.

Понимание Fetch API

Fetch API создан для сетевого взаимодействия и использует систему на основе промисов для получения ресурсов. Он достаточно гибок для работы с различными форматами данных и сложными запросами, что делает его отличным выбором для разработки веб-приложений.

Основное использование Fetch

Давайте рассмотрим базовый пример получения данных из поста на JSONPlaceholder:


Output appears here after Run.

Этот фрагмент кода получает данные из конкретного поста, демонстрируя, как Fetch возвращает промис, который разрешается в ответ на запрос. Затем ответ парсится как JSON и выводится в консоль.

Обработка ошибок в Fetch

Обработка ошибок критически важна при работе с сетевыми запросами. Fetch API упрощает управление ошибками, обеспечивая надежность приложений. Вот пример с обработкой ошибок:


Output appears here after Run.

В этом примере мы проверяем, успешен ли ответ; если нет, выбрасывается ошибка. Метод .catch() перехватывает любые ошибки, сохраняя целостность приложения.

Реализация POST-запроса

Fetch API не ограничивается GET-запросами; он так же хорошо справляется с POST-запросами для отправки данных на сервер. Вот как создать новый пост с помощью JSONPlaceholder:


Output appears here after Run.

Этот фрагмент кода демонстрирует отправку POST-запроса с данными в формате JSON, указывая метод, тело и заголовки. Он иллюстрирует универсальность Fetch API при работе с различными типами запросов.

Использование Async/Await с Fetch

Для более элегантного подхода к асинхронному коду Fetch API можно сочетать с async и await. Этот метод предлагает более читаемый синтаксис, схожий с синхронным кодом:


Output appears here after Run.

Используя async и await, этот пример получает пост, ожидая ответа и обрабатывая его внутри блока try/catch для обработки ошибок. Он демонстрирует, как современные функции JavaScript могут упростить использование Fetch API.

Обработка ошибок с Async/Await

Что касается обработки ошибок в async/await, она обычно выполняется с помощью блоков try-catch.

Чтобы обработать ошибки, которые могут возникнуть во время асинхронных операций, вы можете обернуть вызовы await в блок try и перехватывать возникающие ошибки с помощью блока catch. Вот как можно добавить обработку ошибок в функцию fetchData:


Output appears here after Run.

Распространение ошибок

Распространение ошибок — это механизм, с помощью которого ошибка «перемещается» или передается от одной части вашей программы к другой. Представьте себе путь, который проходит ошибка после возникновения. Когда происходит ошибка, это похоже на падение мяча. Распространение ошибок заключается в том, куда падает мяч после того, как его уронили: кто-то его ловит или он падает на землю?

В JavaScript это обычно происходит через цепочку отклонения промисов, где необработанное отклонение поднимается вверх по стеку вызовов, пока блок catch или глобальный обработчик не перехватит его.

В приведенном ниже примере, если вы хотите, чтобы ошибки обрабатывались функцией-вызывающей (например, viewData), вам следует либо избегать их перехвата в fetchData, либо выбрасывать их снова после перехвата:


Output appears here after Run.

Как вы можете видеть, один и тот же объект ошибки перехватывается в обеих функциях, потому что мы выбрасываем его снова из fetchData в viewData.

Заключение

Fetch API — это незаменимый инструмент для разработчиков на JavaScript, улучшающий веб-приложения благодаря подходу на основе промисов к сетевым запросам. На практических примерах это руководство демонстрирует, как Fetch API можно эффективно использовать для получения данных, обработки ошибок и выполнения POST-запросов, используя API JSONPlaceholder для приложений из реальной жизни. Освоение Fetch API дает разработчикам возможность создавать более отзывчивые, динамичные и надежные веб-приложения.

Практика

Which of the following statements about the Fetch API in JavaScript are true?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.