摘要:設(shè)置通過(guò)屬性或者方法都可以屬性形式傳一個(gè)多維數(shù)組或者對(duì)象字面量方法形式坑當(dāng)接收到一個(gè)代表錯(cuò)誤的狀態(tài)碼時(shí),從返回的不會(huì)被標(biāo)記為,即使該響應(yīng)的狀態(tài)碼是或。
fetch簡(jiǎn)介
Fetch 提供了一個(gè) JavaScript接口,用于訪問(wèn)和操縱HTTP管道的部分,例如請(qǐng)求和響應(yīng)。它還提供了一個(gè)全局 fetch()方法,該方法提供了一種簡(jiǎn)單,合理的方式來(lái)跨網(wǎng)絡(luò)異步獲取資源。
這種功能以前是使用 XMLHttpRequest實(shí)現(xiàn)的,F(xiàn)etch提供了一個(gè)更好的替代方法
Fetch API 是基于 Promise 設(shè)計(jì),使用了Promises 來(lái)處理結(jié)果/回調(diào)。舊瀏覽器不支持 Promise,需要使用 polyfill es6-promise 。
簡(jiǎn)單實(shí)現(xiàn)fetch("http://192.168.43.169:8099/someInfo",{ method: "post", }) .then(res=>{ console.log(response) // 包含響應(yīng)結(jié)果的promise,只是一個(gè) HTTP 響應(yīng),而不是真的JSON return response.json(); }) .then(res=>{ console.log(res) //js格式的json對(duì)象 })
async await實(shí)現(xiàn)更方便
const fetchRequest = async () => { let response = await fetch("http://192.168.43.169:8099/teacher/resume", { method: "post", }) let data = await response.json() console.log(data); //js格式的json對(duì)象 } fetchRequest()Response 對(duì)象
屬性:
status:整數(shù)(默認(rèn)值為200) 為response的狀態(tài)碼
statusText: 字符串(默認(rèn)值為"OK"),該值與HTTP狀態(tài)碼消息對(duì)應(yīng).
ok:如上所示, 該屬性是來(lái)檢查response的狀態(tài)是否在200-299(包括200,299)這個(gè)范圍內(nèi).該屬性返回一個(gè)Boolean值.
方法:處理包含返回結(jié)果的promise對(duì)象的數(shù)據(jù)
例如 response.json()
處理包含json結(jié)果的promise對(duì)象
clone() - 創(chuàng)建一個(gè)新的 Response 克隆對(duì)象.
error() - 返回一個(gè)新的,與網(wǎng)絡(luò)錯(cuò)誤相關(guān)的 Response 對(duì)象.
redirect() - 重定向,使用新的 URL 創(chuàng)建新的 response 對(duì)象..
arrayBuffer() - Returns a promise that resolves with an + ArrayBuffer.
blob() - 返回一個(gè) promise, resolves 是一個(gè) Blob.
formData() - 返回一個(gè) promise, resolves 是一個(gè) FormData 對(duì)象.
json() - 返回一個(gè) promise, resolves 是一個(gè) JSON 對(duì)象.
text() - 返回一個(gè) promise, resolves 是一個(gè) USVString (text).
Request對(duì)象創(chuàng)建request對(duì)象
request = new Request()
屬性:
method:支持 GET, POST, PUT, DELETE, HEAD
url:請(qǐng)求的 URL
headers: 對(duì)應(yīng)的 Headers 對(duì)象
referrer:請(qǐng)求的 referrer 信息
mode:可以設(shè)置 cors, no-cors, same-origin
credentials:設(shè)置 cookies 是否隨請(qǐng)求一起發(fā)送。可以設(shè)置: omit, same-origin
redirect:follow, error, manual
integrity:subresource 完整性值(integrity value)
cache:設(shè)置 cache 模式 (default, reload, no-cache)
let request = new Request("http://192.168.43.169:8099/teacher/resume",{ method: "post", headers: new Headers({ "Content-Type": "text/plain" }) }) fetch(request) .then(res=>{ console.log(res); return res.json(); }) .then(res=>{ console.log(res) })header
創(chuàng)建header對(duì)象
let headers = new Headers();
headers方法:
Headers.append():給現(xiàn)有的header添加一個(gè)值, 或者添加一個(gè)未存在的header并賦值.
Headers.delete():從Headers對(duì)象中刪除指定header.
Headers.entries():以 迭代器 的形式返回Headers對(duì)象中所有的鍵值對(duì).
Headers.get():以 ByteString 的形式從Headers對(duì)象中返回指定header的全部值.
Headers.has():以布爾值的形式從Headers對(duì)象中返回是否存在指定的header.
Headers.keys():以迭代器的形式返回Headers對(duì)象中所有存在的header名.
Headers.set():替換現(xiàn)有的header的值, 或者添加一個(gè)未存在的header并賦值.
Headers.values():以迭代器的形式返回Headers對(duì)象中所有存在的header的值.
Headers.getAll():用于返回具有給定名稱的 Headers 對(duì)象中所有值的數(shù)組; 這個(gè)方法現(xiàn)在已經(jīng)從規(guī)范中刪除了,Headers.get() 方法現(xiàn)在返回所有的值而不是一個(gè)。
設(shè)置header通過(guò)屬性或者方法都可以
屬性形式:傳一個(gè)多維數(shù)組或者對(duì)象字面量
Header = new Headers({ "Content-Type": "text/plain", "Content-Length": content.length.toString(), "X-Custom-Header": "ProcessThisImmediately", });
方法形式:
var Header = new Headers(); Header.append("Content-Type", "text/plain"); Header.append("Content-Length", content.length.toString()); Header.append("X-Custom-Header", "ProcessThisImmediately");fetch坑
當(dāng)接收到一個(gè)代表錯(cuò)誤的 HTTP 狀態(tài)碼時(shí),從 fetch()返回的 Promise 不會(huì)被標(biāo)記為 reject, 即使該 HTTP 響應(yīng)的狀態(tài)碼是 404 或 500。相反,它會(huì)將 Promise 狀態(tài)標(biāo)記為 resolve (但是會(huì)將 resolve 的返回值的 ok 屬性設(shè)置為 false ),僅當(dāng)網(wǎng)絡(luò)故障時(shí)或請(qǐng)求被阻止時(shí),才會(huì)標(biāo)記為 reject。
Fetch 請(qǐng)求默認(rèn)是不帶 cookie 的,需要設(shè)置 fetch(url, {credentials: "include"})
不能中斷,沒(méi)有 abort、terminate、onTimeout 或 cancel 方法Fetch 和 Promise 一樣,一旦發(fā)起,不能中斷,也不會(huì)超時(shí),只能等待被 resolve 或 reject。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/105139.html
摘要:我們都知道因?yàn)橥床呗缘膯?wèn)題,瀏覽器的請(qǐng)求是可能隨便跨域的一定要有跨域頭或者借助,但是,中可以設(shè)置為不跨域,如下所示這樣之后我們會(huì)得到一個(gè)為的返回。 免費(fèi)幫忙內(nèi)推阿里等各大IT公司的崗位,有興趣可以帶簡(jiǎn)歷加微信angeltune 引言 前端技術(shù)真是一個(gè)發(fā)展飛快的領(lǐng)域,我三年前入職的時(shí)候只有原生XHR和Jquery ajax,我們還曾被JQuery 1.9版本版本以下不支持大文件請(qǐng)求這個(gè)...
摘要:請(qǐng)求默認(rèn)會(huì)攜帶同源請(qǐng)求的,而跨域請(qǐng)求則不會(huì)攜帶,設(shè)置的的屬性為將允許攜帶跨域。類型請(qǐng)求成功后的回調(diào)函數(shù)。另外,同樣提供了在環(huán)境下的支持,可謂是網(wǎng)絡(luò)請(qǐng)求的首選方案。當(dāng)網(wǎng)絡(luò)故障時(shí)或請(qǐng)求被阻止時(shí),才會(huì)標(biāo)記為,如跨域不存在,網(wǎng)絡(luò)異常等會(huì)觸發(fā)。 一、前端進(jìn)行網(wǎng)絡(luò)請(qǐng)求的關(guān)注點(diǎn) 大多數(shù)情況下,在前端發(fā)起一個(gè)網(wǎng)絡(luò)請(qǐng)求我們只需關(guān)注下面幾點(diǎn): 傳入基本參數(shù)(url,請(qǐng)求方式) 請(qǐng)求參數(shù)、請(qǐng)求參數(shù)類型 設(shè)...
摘要:所以本文將介紹兩個(gè)目前常用的獲取服務(wù)器數(shù)據(jù)的庫(kù)和。隨著作者尤雨溪發(fā)布消息,不再繼續(xù)維護(hù)并推薦大家使用開(kāi)始,進(jìn)入了很多人的目光。脫離了,是基于設(shè)計(jì)。如果要詳細(xì)了解的應(yīng)用,推薦閱讀教程和規(guī)范。歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由前端林子發(fā)表于云+社區(qū)專欄 隨著前端技術(shù)的發(fā)展,請(qǐng)求服務(wù)器數(shù)據(jù)的方法早已不局限于ajax、jQuery的ajax方法。各種js庫(kù)已如雨后...
摘要:結(jié)果證明,對(duì)于以上瀏覽器,在生產(chǎn)環(huán)境使用是可行的。后面可以跟對(duì)象,表示等待才會(huì)繼續(xù)向下執(zhí)行,如果被或拋出異常則會(huì)被外面的捕獲。,,都是現(xiàn)在和未來(lái)解決異步的標(biāo)準(zhǔn)做法,可以完美搭配使用。這也是使用標(biāo)準(zhǔn)一大好處。只允許外部傳入成功或失敗后的回調(diào)。 showImg(https://cloud.githubusercontent.com/assets/948896/10188666/bc9a53...
摘要:的案例下面我們來(lái)寫第一個(gè)獲取后端數(shù)據(jù)的例子通過(guò)獲取百度的錯(cuò)誤提示頁(yè)面返回一個(gè)對(duì)象是一個(gè)對(duì)象是最終的結(jié)果請(qǐng)求請(qǐng)求初步完成了,這個(gè)時(shí)候就要來(lái)認(rèn)識(shí)一下請(qǐng)求如何處理了。 JavaScript fetch接口 如果看網(wǎng)上的fetch教程,會(huì)首先對(duì)比XMLHttpRequest和fetch的優(yōu)劣,然后引出一堆看了很快會(huì)忘記的內(nèi)容(本人記性不好)。因此,我寫一篇關(guān)于fetch的文章,為了自己看著方便...
閱讀 1502·2023-04-25 15:40
閱讀 2888·2021-08-11 11:15
閱讀 2287·2019-08-26 13:48
閱讀 2861·2019-08-26 12:18
閱讀 2463·2019-08-23 18:23
閱讀 2916·2019-08-23 17:01
閱讀 2990·2019-08-23 16:29
閱讀 1109·2019-08-23 15:15