Conceptos básicos de Fetch
La API Fetch proporciona una interfaz para obtener recursos (incluso a traves de la red). Parecera familiar a quien sea que haya usado 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.
Nota: 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 pocas palabras
En el corazón de Fetch estan las abstracciones de interfaz de cargas de HTTP Request
s, Response
s, Headers
, y Body
, junto a un método 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 Promise
.
Guard
Guard es una característica de objetos Headers
, con los valores posibles immutable
, request
, request-no-cors
, response
, o none
, dependiendo de donde el encabezado es usado.
Cuando un nuevo objeto Headers
es creado usando el Headers()
constructor, su guarda (guard) se establece a none
(por defecto). Cuando un objeto Request
o Response
es creado, tiene un objeto 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
Headers asociado
|
---|---|---|
Request |
Request() |
request |
Request() con
mode de no-cors
|
request-no-cors |
|
Response |
Response() |
response |
Métodos error() o
redirect()
|
immutable |
Un guarda (guard) de encabezado afecta los métodos set()
, delete()
, y append()
que cambían los contenidos del encabezado. Un TypeError
es arrojado si se trata modificar un objeto Headers
cuyo guarda (guard) es immutable
. Sin embargo, la operación funcionará si
- guard es
request
y el nombre del encabezado no es un forbidden header name . - guard es
request-no-cors
y el encabezado nombre/valor es un simple header . - guard es
response
y el nombre del encabezado no es forbidden response header name.