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

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

Oпределения и использование

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

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

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

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

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

Вы можете создавать запрос и ответ непосредственно, используя конструкторы 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 Живой стандарт Изначальное определение

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

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
fetch
Экспериментальная
Chrome Полная поддержка 42Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enable preference. To change preferences in Firefox, visit about:config.
Полная поддержка 52
Замечания
Замечания fetch() now defined on WindowOrWorkerGlobalScope mixin.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Полная поддержка 10.1WebView Android Полная поддержка 42Chrome Android Полная поддержка 42Firefox Android Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enable preference. To change preferences in Firefox, visit about:config.
Полная поддержка 52
Замечания
Замечания fetch() now defined on WindowOrWorkerGlobalScope mixin.
Opera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Полная поддержка 10.3Samsung Internet Android ?
Streaming response body
Экспериментальная
Chrome Полная поддержка 43Edge Полная поддержка 14Firefox Полная поддержка Да
Отключено
Полная поддержка Да
Отключено
Отключено This feature is behind the dom.streams.enabled preference and the javascript.options.streams preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29Safari Полная поддержка 10.1WebView Android Полная поддержка 43Chrome Android Полная поддержка 43Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Полная поддержка 10.3Samsung Internet Android ?
Support for blob: and data:
Экспериментальная
Chrome Полная поддержка 48Edge Нет поддержки НетFirefox ? IE Нет поддержки НетOpera ? Safari ? WebView Android Полная поддержка 43Chrome Android Полная поддержка 48Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android ?
referrerPolicyChrome Полная поддержка 52Edge Нет поддержки НетFirefox Полная поддержка 52IE Нет поддержки НетOpera Полная поддержка 39Safari Полная поддержка 11.1WebView Android Полная поддержка 52Chrome Android Полная поддержка 52Firefox Android Полная поддержка 52Opera Android Полная поддержка 41Safari iOS Нет поддержки НетSamsung Internet Android ?
signal
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка 57IE Нет поддержки НетOpera Полная поддержка 53Safari Полная поддержка 11.1WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android Полная поддержка 57Opera Android Полная поддержка 47Safari iOS Полная поддержка 11.1Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

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

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

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