Fetch API基本概念

2018-01-22 11:47 更新

所述Fetch API提供了用于獲取資源(包括通過網(wǎng)絡(luò))的接口。任何使用過 XMLHttpRequest 的人似乎都會對Fetch API感到熟悉,但它提供了一個更強大和更靈活的功能集。本文解釋了Fetch API的一些基本概念。

本文將隨著時間的推移而添加。如果您發(fā)現(xiàn)您認為需要更好解釋的Fetch概念,請在W3Cschool編程問答中提出您的疑問。

Fetch API簡述

簡單來說,F(xiàn)etch的核心是HTTP Requests,Responses Headers和Bodypayload 的接口抽象,以及一個用于啟動異步資源請求的全局fetch方法。由于HTTP的主要組件被抽象為JavaScript對象,所以其他API可以很容易利用這些功能。

Service Workers是大量使用Fetch API的一個示例。

Fetch將這種請求的異步性質(zhì)進一步提升了一步。API是完全基于Promise的。

Guard

Guard是Headers對象的一個特征,具有可能的值有:immutable,request,request-no-cors,response或none,具體取決于header被使用的地方。

當(dāng)使用Headers()構(gòu)造函數(shù)創(chuàng)建新的Headers對象時,其Guard被設(shè)置為none(默認值)。當(dāng)一個Request或一個Response對象被創(chuàng)建時,它有一個關(guān)聯(lián)的Headers對象,它的Guard設(shè)置如下:

新對象的類型創(chuàng)建構(gòu)造函數(shù)關(guān)聯(lián)Headers對象的Guard設(shè)置
RequestRequest()request
Request()使用no-corsmoderequest-no-cors
ResponseResponse()response
error()redirect()方法immutable

一個header的Guard影響set()、delete()和append()方法,它改變了header的內(nèi)容。如果你試圖修改其Guard是immutable的Headers對象,則會引發(fā) TypeError。不過,如果這個操作會在下列情況中起作用:

  • Guard是request和header名稱不是一個禁止的header名稱。
  • Guard是request-no-cors并且header的name/value是一個簡單的header。
  • Guard是response和header名稱不是一個禁止響應(yīng)header名稱。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號