--- title: Fetch API slug: Web/API/Fetch_API tags: - API - Fetch - Response - XMLHttpRequest - request - Главная - Справка - Экспериментальная translation_of: Web/API/Fetch_API ---

{{DefaultAPISidebar("Fetch API")}}

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

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

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

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

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

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

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

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

Отличия от jQuery

Спецификации fetch() отличаются от jQuery.ajax() тремя основными способами:

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

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

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

Fetch интерфейсы

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

Fetch примесь

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

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

{{Specifications}}

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

{{Compat("api.WindowOrWorkerGlobalScope.fetch")}}

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