关于
fetch是获取请求的一种方法,会返回Promise,相对ajax,属于较底层api。
特点
- 默认不带cookie,可以设置,也可以设置其它请求头。
- fetch返回promise,当遇到网络错误时会被reject,对很多4xx、5xx不会报错,判断成功与否需要在resolve时增加对response.ok属性的判断。
- 对于xhr中的abort、progress,在fetch中有相应的控制器可处理(FetchController、AbortController),好像还没有正式成为规范。
语法
request
1fetch( url[, options])- url,要获取资源的url
- options,配置项对象,包含请求的设置
method:请求方法。默认GET。headers:包含请求头设置的对象。body:请求的body信息。mode:请求的模式。如cors、no-cors或者some-origin。credentials:请求的credentials。如omit、some-origin或者include,设置include时,在当前域请求时会带上cookie。cache:请求的cache模式。如default、no-store、reload、no-cache、force-cache或者only-if-cached。redirect:可用的redirect模式。如follow(自动重定向)、error(如果产生重定向会自动终止并抛出错误)或者manual(手动处理)referrer:请求来源。如no-referrer、client或者一个URL。默认client。?referrerPolicy:请求来源的策略。如no-referrer、no-referrer-when-downgrade、origin、origin-when-cross-origin、unsafe-url。?integrity:请求子资源的完整值。?
response
123fetch( url).then( function(res){return res.json();})- 在请求的resolve时会得到一个Response对象
status:状态码。ok:表示请求是否成功的布尔值。res.blob()、res.arrayBuffer()、res.formData()、res.json()、res.text()这几个方法是读取Response并将它设置为已读(即只可读一次),并返回一个相应格式的promise对象。
- 在请求的resolve时会得到一个Response对象