美文网首页
Fetch Api 详解

Fetch Api 详解

作者: 好了伤疤忘了痛_伪全栈 | 来源:发表于2018-05-16 15:15 被阅读0次

    位于 WorkerOrGlobalScope 这一个 mixin 中的 **fetch() **方法用于发起获取资源的请求。它返回一个 promise,这个 promise 会在请求响应后被 resolve,并传回 Response 对象。

    [Window] 和 [WorkerGlobalScope]都实现了 WorkerOrGlobalScope。 ——这意味着基本在任何场景下只要你想获取资源,都可以使用 位于 WorkerOrGlobalScope 中的 fetch() 方法

    当遇到网络错误时,[fetch()]返回的 promise 会被 reject,并传回 [TypeError],虽然这也可能因为权限或其它问题导致。成功的 fetch() 检查不仅要包括 promise 被 resolve,还要包括 [Response.ok]属性为 true。HTTP 404 状态并不被认为是网络错误。

    fetch() 方法由 [Content Security Policy]的 connect-src指令控制,而不是它请求的资源

    注意: fetch() 方法的参数与 Request()构造器是一样的

    # 参数 #
      ##  input :
      定义要获取的资源:
       1: 一个 USVString 字符串,包含要获取资源的URL.一些浏览器会接受bolb:和data:作为schemes.
       2:一个Request对象
    ##  inint【可选】
      一个配置项对象,包括所有对请求的设置。可选参数有:
        1:method : 请求使用的方法,如 GET、POST。
        2:headers: 请求的头信息,形式为 [`Headers`] 的对象或包含 [`ByteString`] 值的对象字面量。
        3:body: 请求的 body 信息:可能是一个 [`Blob`]、[`BufferSource`]、[`FormData`]、[`URLSearchParams`]
                        或者 [`USVString`] 对象。注意 GET 或 HEAD 方法的请求不能包含 body 信息。
        4:mode: 请求的模式,如 cors、 no-cors 或者 same-origin。
        5:credentials: 请求的 credentials,如 `omit、``same-origin 或者` `include。为了在当前域名内自动发送 cookie , 
                                  必须提供这个选项, 从 Chrome 50 开始, 这个属性也可以接受` [`FederatedCredential`] 实例或是
                                一个 [`PasswordCredential`] 实例。
        6:cache : 请求的 cache 模式: default 、 no-store 、reload 、no-cache 、force-cache 或者 only-if-cached 。
        7:redirect: 可用的 redirect 模式: follow (自动重定向), error (如果产生重定向将自动终止并且抛出一个错误), 
                          或者 manual (手动处理重定向). 在Chrome中,Chrome 47之前的默认值是 follow,从 Chrome 47开始是 manual。
        8:referrer: 一个 [`USVString`] 可以是 `no-referrer、``client`或一个 URL。默认是 `client。`
        9:referrerPolicy : Specifies the value of the referer HTTP header. May be one of no-referrer、 
                                      no-referrer-when-downgrade、 origin、 origin-when-cross-origin、 unsafe-url 。
        10:integrity: 包括请求的  [subresource integrity]值 ( 如: `sha256BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=)。`
    # 返回值 #
    一个 [`Promise`],resolve 时回传 [`Response`]对象。
    
    
    # 示例
    fetch(location.herf, {
        method: "get"
    }).then(function(response) {
        return response.text()
    }).then(function(body) {
        console.log(body)
    })
    

    相关文章

      网友评论

          本文标题:Fetch Api 详解

          本文链接:https://www.haomeiwen.com/subject/xdbpdftx.html