--- title: Conceitos básicos de Fetch slug: Web/API/Fetch_API/Basic_concepts translation_of: Web/API/Fetch_API/Basic_concepts ---

{{DefaultAPISidebar("Fetch API")}}{{draft}}

Fetch API fornece uma interface para buscar recursos (inclusive pela rede). Parecerá familiar para alguém que já tenha usado {{domxref("XMLHttpRequest")}}, mas ela fornece um conjunto de recursos mais poderoso e flexível . Este artigo expõe alguns conceitos básicos da API Fetch.

Este artigo será incrementado ao longo do tempo. Se você achar um conceito em Fetch que parece precisar de uma explicação melhor, informe alguém em fórum de discussãMDN, or Mozilla IRC (#mdn room.)

Em poucas palavras

O coração do Fetch são as abstrações da Interface do HTTP {{domxref("Request")}}, {{domxref("Response")}}, {{domxref("Headers")}}, e {{domxref("Body")}} payloads, juntamente com {{domxref("GlobalFetch.fetch","global fetch")}} método para iniciar requisições de recursos assíncronos. Como os componentes principais do HTTP são abstraidos como objetos de JavaScript, torna-se fácil APIs fazer uso das funcionalidades.

Service Workers é um exemplo de uma API que faz um grande uso de Fecth.

Fetch leva a assincronicidade um passo além. A API é completamente baseada em {{jsxref("Promise")}}.

Guard

Guard é uma novidade de objetos {{domxref("Headers")}}, podendo assumir os valores de immutable, request, request-no-cors, response, ou none, dependendo de onde o cabeçalho é utilizado.

Quando um novo objeto {{domxref("Headers")}} é criado usando o {{domxref("Headers.Headers","Headers()")}} {{glossary("constructor")}}, seu guard é configurado como none (o padrão). Quando um objeto {{domxref("Request")}} ou {{domxref("Response")}} é criado, tem um objeto {{domxref("Headers")}}  associado cujo guard é resumido a seguir:

Novo tipo de objeto Construtor criado Configuração guard associada ao objeto {{domxref("Headers")}}
{{domxref("Request")}} {{domxref("Request.Request","Request()")}} request
{{domxref("Request.Request","Request()")}} com {{domxref("Request.mode","mode")}} de no-cors request-no-cors
{{domxref("Response")}} {{domxref("Response.Response","Response()")}} response
Métodos {{domxref("Response.error","error()")}} ou {{domxref("Response.redirect","redirect()")}} immutable

Um cabeçalho guard afeta os métodos {{domxref("Headers.set","set()")}}, {{domxref("Headers.delete","delete()")}}, e {{domxref("Headers.append","append()")}} os quais mudam o conteúdo do cabeçalho. UmTypeError é lançado se você tentar modificar um objeto {{domxref("Headers")}} objeto cujo "guard" é immutable. De qualquer maneira, a operação vai funcionar se