Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Fetch API предоставляет интерфейс для получения ресурсов (в том числе по сети). Это покажется знакомым любому, кто использовал XMLHttpRequest, но новый API является более мощным и гибким набором функций.

Понятия и использование

Fetch обеспечивает обобщенное определение объектов Request и Response (и других вещей, связанных с сетевыми запросами). Это позволит им использоваться везде, где необходимо в будущем, в том числе и для service workers, Cache API и других подобных технологий, которые обрабатывают или изменяют запросы (requests) и ответы (responses), а так же в любых других случаях, которые могут потребовать от вас генерировать свой собственный ответ программно.

Это так же предоставляет определение в отношение таких понятий, как CORS и семантика заголовоков HTTP origin, заменяя их обособленные определения где бы то ни было.

Чтобы создать запрос и получить данные, используется метод GlobalFetch.fetch. Он реализован во множестве интерфейсов, в том числе в Window и WorkerGlobalScope. Это позволяет использовать их практически в любом контексте для получения данных.

Метод fetch() принимает один обязательный аргумет —  путь к данным, которые вы хотите получить. Он возвращает promise, который ведёт к ответу (Response) на запрос, если все прошло удачно. Вы можете также передать во втором аргументе необязательный объект с указанием опций (см. Request.)

Как только Response выполнится успешно, становятся доступными несколько методов для определения тела контента и, как его содержимое должно быть обработано (см. Body.)

Вы можете создавать запрос и ответ непосредственно, используя конструкторы Request() и Response(), но маловероятно, что в этом есть необходимость. Напротив, Request и Response могут быть переданы как результат работы другого API (например, FetchEvent.respondWith в service workers.)

Заметка: Найдите больше об использовании Fetch API на Using Fetch, и изучите концепции на Fetch basic concepts.

Прерывание выборки

Браузеры начали добавлять экспериментальную поддержку для AbortController и AbortSignal интерфейсов (aka The Abort API), которые позволяют прерывать операции, такие как Fetch и XHR, если они еще не завершены. Подробности смотрите на страницах интерфейсов.

Fetch интерфейсы

GlobalFetch
Содержит метод fetch(), используемый для получения ресурсов.
Headers
Представляет заголовки запроса/ответа, позволяет запрашивать данные и выполнять различные действия в зависимости от результата.
Request
Запрашивает ресурс.
Response
Представляет ответ на запрос.

Fetch примесь

Body
Предоставляет методы, отсносящиеся к телу запроса/ответа, позволяя вам определять content-type и то, как ответ должен быть обработан.

Спецификации

Спецификация Статус Комментарий
Fetch Живой стандарт Изначальное определение

Браузерная совместимость

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Базовая поддержка 42
 
14 39 (39)
34[1]
52 (52)[2]
Нет

29
28[1]

10.1
Поток тела запроса 43 14

Нет[3]

Нет

?

Нет

Feature Android Webview Chrome for Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Базовая поддержка 42 42 (Да) (Да) Нет Нет 10.1
Поток тела запроса 43 43 (Да)

Нет[3]

Нет

?

Нет

[1] This API is implemented behind a preference.

[2] Prior to Firefox 52, get() only returned the first value in the specified header, with getAll() returning all values. From 52 onwards, get() now returns all values and getAll() has been removed.

[3] Readable streams are currently enabled in Firefox, but hidden behind the dom.streams.enabled and javascript.options.streams prefs.

Смотрите также

Метки документа и участники

Обновлялась последний раз: WispProxy,