--- title: Conceptos básicos de Fetch slug: Web/API/Fetch_API/Basic_concepts tags: - API - API Fetch - Fetch - conceptos - guard - request translation_of: Web/API/Fetch_API/Basic_concepts original_slug: Web/API/Fetch_API/Conceptos_basicos ---
{{DefaultAPISidebar("Fetch API")}}{{draft}}
La API Fetch proporciona una interfaz para obtener recursos (incluso a traves de la red). Parecera familiar a quien sea que haya usado {{domxref("XMLHttpRequest")}}, pero proporciona un conjunto de características más potentes y flexibles. Este artículo explica algunos de los conceptos básicos de la API Fetch.
Este artículo será añadido en un futuro. Si encuenta un concepto de Fetch que siente necesita una mejor explicación, hagalo saber a alguien en el foro de discusión de MDN, o Mozilla IRC (#mdn room.)
En el corazón de Fetch estan las abstracciones de interfaz de cargas de HTTP {{domxref("Request")}}s, {{domxref("Response")}}s, {{domxref("Headers")}}, y {{domxref("Body")}}, junto a un método {{domxref("GlobalFetch.fetch","global fetch")}} para inicializar peticiones de recurso asíncronos. Porque los prinipales componentes de HTTP son abstraídos como objetos Javascript, es sencillo para otras APIs el hacer uso de dicha funcionalidad.
Service Workers es un ejemplo de una API que hace un fuerte uso de Fetch.
Fetch toma la naturaleza asíncrona de dichas peticiones un paso adelante. La API esta completamente basada en {{jsxref("Promise")}}.
Guard es una característica de objetos {{domxref("Headers")}}, con los valores posibles immutable
, request
, request-no-cors
, response
, o none
, dependiendo de donde el encabezado es usado.
Cuando un nuevo objeto {{domxref("Headers")}} es creado usando el {{domxref("Headers.Headers","Headers()")}} {{glossary("constructor")}}, su guarda (guard) se establece a none
(por defecto). Cuando un objeto {{domxref("Request")}} o {{domxref("Response")}} es creado, tiene un objeto {{domxref("Headers")}} asociado cuyo guarda (guard) se establece como se resume a continuación:
nuevo tipo de objeto | creando el constructor | configuraciones de guarda (guard) del objeto {{domxref("Headers")}} asociado |
---|---|---|
{{domxref("Request")}} | {{domxref("Request.Request","Request()")}} | request |
{{domxref("Request.Request","Request()")}} con {{domxref("Request.mode","mode")}} de no-cors |
request-no-cors |
|
{{domxref("Response")}} | {{domxref("Response.Response","Response()")}} | response |
Métodos {{domxref("Response.error","error()")}} o {{domxref("Response.redirect","redirect()")}} | immutable |
Un guarda (guard) de encabezado afecta los métodos {{domxref("Headers.set","set()")}}, {{domxref("Headers.delete","delete()")}}, y {{domxref("Headers.append","append()")}} que cambían los contenidos del encabezado. Un TypeError
es arrojado si se trata modificar un objeto {{domxref("Headers")}} cuyo guarda (guard) es immutable
. Sin embargo, la operación funcionará si
request
y el nombre del encabezado no es un {{Glossary("forbidden header name")}} .request-no-cors
y el encabezado nombre/valor es un {{Glossary("simple header")}} .response
y el nombre del encabezado no es {{Glossary("forbidden response header name")}}.