AJAX и Fetch API
Last updated
Last updated
AJAX — метод отправки или запроса данных с последующим обновлением интерфейса по этим данным, без необходимости перезагрузки страницы. За счет этого уменьшается время отклика и веб-страница становится более интерактивной.
Несмотря на то, что в названии технологии присутствует XML, использовать его вовсе не обязательно. Под AJAX подразумевают любое общение с сервером без перезагрузки страницы.
В пример можно привести подгрузку данных:
На веб-странице происходит событие (страница загружается, нажимается кнопка "Показать больше", отправляется форма и т. п.).
На клиенте, с помощью JavaScript, реакцией на это событие выполнятся функция для работы с сервером, где создается и отправляется HTTP-запрос.
Сервер получает и обрабатывает HTTP-запрос, отправляя обратно в ответе данные в JSON-формате.
На клиенте, с помощью JavaScript, ответ от сервера обрабатывается, считываются данные и обновляется интерфейс.
— предоставляет интерфейс, набор методов и свойств для отправки, получения и обработки ресурсов от сервера.
Это нового поколения. Он предоставляет улучшенный интерфейс для составления запросов к серверу и построен на обещаниях (promise).
url
— обязательный параметр - путь к данным которые вы хотите получить.
options
— необязательный параметр - объект настроек запроса. Содержит служебную информацию: метод (по умолчанию GET
), заголовки, тело и т. д.
Возвращает промис, который содержит ответ сервера.
В зависимости от типа получаемого контента, используется различный метод парса.
Response.prototype.json()
- используется, когда от бекенда ожидаются данные в JSON-формате.
Response.prototype.text()
- используется, когда от бекенда ожидаются данные в простом текстовом формате, например .csv
- формат хранения табличных данных в виде текстового файла.
Response.prototype.blob()
- используется, когда от бекенда ожидаются данные, описывающие файл, например изображение, аудио или видео.
Для составления заголовков запроса можно использовать просто литерал объекта со свойствами. В таком случае методов заголовков не будет, что зачастую и не требуется.
Запрос с использованием заголовков может выглядеть так.
Разберем распространенную ошибку начинающих разработчиков, попытку использовать данные вне метода then
, используем для этого предыдущий пример.
На вкладке Network
отображаются все выполняющиеся на странице HTTP-запросы. Выбрав XHR
(можно фильтровать по типу запроса), останутся только запросы к бекенду, и после нажатия кнопки, через некоторое время, отобразится запрос. Выбрав его, можно посмотреть служебную информацию и тело ответа на вкладках Headers
, Preview
, Response
и Timing
.
Каждый API уникален, их тысячи, невозможно заучить код для работы с одним сервисом и использовать его для общения с другим. С другой стороны, RESTful API построены по принципам REST-архитектуры, а это значит, что можно понять принцип и методы работы, после чего, все что нужно сделать — это ознакомиться с документацией того сервиса, который необходимо использовать.
Состоит из:
https://api.privatbank.ua/p24api
— endpoint, base URL, точка входа на API.
/pubinfo
— ресурс, к которому мы обращаемся
?
— говорит о том, что дальше идут параметры запроса
&
— используется для указания смыслового И
, связывает параметры запроса
Параметры ответа из документации:
ccy
- код валюты
base_ccy
- код национальной валюты
buy
- курс покупки
sale
- курс продажи
В первый then
передается экземпляр класса , снабженный различными методами и свойствами. В нем содержится служебная информация о состоянии ответа сервера.
— позволяет выполнять различные действия в заголовках HTTP-запроса и ответа. Эти действия включают в себя извлечение, настройку, добавление и удаление заголовков (методы append
, has
, get
, set
, delete
).
Для примера был выбран . Из документации берем URL для запроса информации о текущем курсе обмена валют.