阅读(2289) (0)

Fetch API基本概念

2018-01-22 10:54:01 更新

所述Fetch API提供了用于获取资源(包括通过网络)的接口。任何使用过 XMLHttpRequest 的人似乎都会对Fetch API感到熟悉,但它提供了一个更强大和更灵活的功能集。本文解释了Fetch API的一些基本概念。

本文将随着时间的推移而添加。如果您发现您认为需要更好解释的Fetch概念,请在W3Cschool编程问答中提出您的疑问。

Fetch API简述

简单来说,Fetch的核心是HTTP Requests,Responses Headers和Bodypayload 的接口抽象,以及一个用于启动异步资源请求的全局fetch方法。由于HTTP的主要组件被抽象为JavaScript对象,所以其他API可以很容易利用这些功能。

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

Fetch将这种请求的异步性质进一步提升了一步。API是完全基于Promise的。

Guard

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

当使用Headers()构造函数创建新的Headers对象时,其Guard被设置为none(默认值)。当一个Request或一个Response对象被创建时,它有一个关联的Headers对象,它的Guard设置如下:

新对象的类型创建构造函数关联Headers对象的Guard设置
RequestRequest()request
Request()使用no-corsmoderequest-no-cors
ResponseResponse()response
error()redirect()方法immutable

一个header的Guard影响set()、delete()和append()方法,它改变了header的内容。如果你试图修改其Guard是immutable的Headers对象,则会引发 TypeError。不过,如果这个操作会在下列情况中起作用:

  • Guard是request和header名称不是一个禁止的header名称。
  • Guard是request-no-cors并且header的name/value是一个简单的header。
  • Guard是response和header名称不是一个禁止响应header名称。