fetch

  • 原生js,基于Promise,不涉及ajax

  • 存在于window上恤磷,window.fetch

  • XMLHttpRequest的替代品

參數(shù)
  • 請(qǐng)求地址

  • 請(qǐng)求配置對(duì)象弧轧,選填,可填屬性如下碗殷,主要關(guān)注method精绎,headerbody

  • 參考

  • method 字符串锌妻,請(qǐng)求方式代乃,默認(rèn)GET

  • header 對(duì)象,請(qǐng)求頭

  • body 請(qǐng)求體內(nèi)容仿粹,類型與請(qǐng)求頭里的Content-Type匹配

  • mode 字符串搁吓,請(qǐng)求模式,有以下三種

    • cors 默認(rèn)值吭历,會(huì)在請(qǐng)求頭中加入originreferer

    • no-cors 不會(huì)在請(qǐng)求頭中加入originreferer堕仔,跨域時(shí)可能出現(xiàn)問題

    • same-origin 請(qǐng)求必須在同一個(gè)域中,跨域則會(huì)報(bào)錯(cuò)

  • credentials 如何攜帶憑據(jù)cookie晌区,有以下三種

    • omit 默認(rèn)值摩骨,不攜帶cookie

    • same-origin 請(qǐng)求同源地址時(shí)攜帶cookie

    • include 請(qǐng)求任何地址都攜帶cookie

  • cache 配置緩存模式

返回值
  • 返回值為一個(gè)Promise對(duì)象

    • 收到服務(wù)器返回結(jié)果后,無論服務(wù)器返回的是什么結(jié)果朗若,該Promise都會(huì)進(jìn)入resolved狀態(tài)恼五,

    • 當(dāng)網(wǎng)絡(luò)發(fā)生錯(cuò)誤,服務(wù)器未能返回?cái)?shù)據(jù)時(shí)哭懈,該Promise進(jìn)入rejected狀態(tài)

  • Promise對(duì)象的resolve函數(shù)的參數(shù)為一個(gè)Response對(duì)象灾馒,可使用await直接拿到,屬性如下

    • 參考

    • ok 當(dāng)響應(yīng)的狀態(tài)碼在200-299之間遣总,則為true睬罗,否則為false

    • status 響應(yīng)狀態(tài)碼

    • 以下方法均為異步,所以可配合await使用旭斥,因?yàn)?Responses 對(duì)象被設(shè)置為了 stream 的方式容达,所以它們只能被讀取一次,也就是說這些方法只能執(zhí)行一次

    • text() 處理文本格式的Ajax響應(yīng)琉预,拿到一個(gè)被解析為 USVString 格式的 Promise 對(duì)象

    • json()處理JSON格式的Ajax響應(yīng)董饰,拿到一個(gè)被解析為JSON格式的 Promise 對(duì)象

    • blob() 處理二進(jìn)制格式文件的Ajax響應(yīng),例如圖片圆米,電子表格等卒暂,拿到一個(gè)被解析為Blob格式的 Promise 對(duì)象

    • redirect() 重定向至另一個(gè)URL,她會(huì)創(chuàng)建一個(gè)新的Promise娄帖,來解決重定向的URL響應(yīng)

來顆栗子
  • 假設(shè)請(qǐng)求一切順利
async function getData() {
    const url = "xxxx";

    const result = await fetch(url)  fetch執(zhí)行完會(huì)返回一個(gè)Promise對(duì)象P1也祠,該P(yáng)romise對(duì)象的resolve函數(shù)的參數(shù)為一個(gè)Response對(duì)象
        .then((response) => {  通過參數(shù)拿到該Response對(duì)象
            response = response.json();  處理
            return response;  返回
        })  then執(zhí)行結(jié)束返回了一個(gè)新的Promise對(duì)象P2
        .then((resp) => {  P2的resolve函數(shù)的參數(shù)為P1的resolve函數(shù)的返回值response
            return resp.data;  返回要拿到的數(shù)據(jù)
        });  then執(zhí)行結(jié)束又返回了一個(gè)新的Promise對(duì)象P3
        await拿到P3的resolve函數(shù)的參數(shù),也就是P2的resolve函數(shù)的返回值resp.data

    return result;
}
Request
  • new Request(請(qǐng)求地址近速,請(qǐng)求配置)

  • 除了通過傳入請(qǐng)求地址和請(qǐng)求配置對(duì)象的方式诈嘿,還可以通過直接傳入一個(gè)Request對(duì)象的方式來使用fetch

  • 而實(shí)際上使用第一種方式時(shí)堪旧,fetch內(nèi)部就是為我們創(chuàng)建了一個(gè)Request對(duì)象

文件上傳
  • 流程

    • 客戶端將文件數(shù)據(jù)發(fā)送給服務(wù)器

    • 服務(wù)器保存上傳的文件數(shù)據(jù)至服務(wù)器端

    • 服務(wù)器響應(yīng)給客戶端一個(gè)文件的訪問地址

  • 請(qǐng)求方式:由于文件一般都比較大,所以使用POST

  • 請(qǐng)求的表單格式:multipart/form-data

  • 請(qǐng)求體中需傳入的鍵值對(duì):鍵為服務(wù)器要求名稱奖亚,值為文件數(shù)據(jù)

  • 一般通過HTML5提供的FormData來構(gòu)建請(qǐng)求體

    • const formData = new FormData();

    • formData.append("img", inp.file[0]); 添加鍵值對(duì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淳梦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昔字,更是在濱河造成了極大的恐慌爆袍,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件作郭,死亡現(xiàn)場(chǎng)離奇詭異陨囊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)夹攒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門蜘醋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咏尝,你說我怎么就攤上這事压语。” “怎么了状土?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵无蜂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蒙谓,道長(zhǎng),這世上最難降的妖魔是什么训桶? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任累驮,我火速辦了婚禮,結(jié)果婚禮上舵揭,老公的妹妹穿的比我還像新娘谤专。我一直安慰自己,他們只是感情好午绳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布置侍。 她就那樣靜靜地躺著,像睡著了一般拦焚。 火紅的嫁衣襯著肌膚如雪蜡坊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天赎败,我揣著相機(jī)與錄音秕衙,去河邊找鬼。 笑死僵刮,一個(gè)胖子當(dāng)著我的面吹牛据忘,可吹牛的內(nèi)容都是我干的鹦牛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼勇吊,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼曼追!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汉规,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤拉鹃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鲫忍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膏燕,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年悟民,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坝辫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡射亏,死狀恐怖近忙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情智润,我是刑警寧澤及舍,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站窟绷,受9級(jí)特大地震影響锯玛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兼蜈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一攘残、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧为狸,春花似錦歼郭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漾根,卻和暖如春泰涂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背立叛。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工负敏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秘蛇。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓其做,卻偏偏與公主長(zhǎng)得像顶考,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妖泄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 參考AJAX 之 XHR, jQuery, Fetch 的對(duì)比[https://zhuanlan.zhihu.co...
    合肥黑閱讀 3,441評(píng)論 0 3
  • Fetch API 提供了一個(gè) JavaScript接口驹沿,用于訪問和操縱HTTP管道的部分,例如請(qǐng)求和響應(yīng)蹈胡。它還提...
    wwmin_閱讀 38,032評(píng)論 0 59
  • 前言 Fetch API是新的ajax解決方案渊季,用于解決古老的XHR對(duì)象不能實(shí)現(xiàn)的問題。 主要優(yōu)點(diǎn): 語法簡(jiǎn)單罚渐,更...
    microkof閱讀 17,057評(píng)論 0 7
  • 導(dǎo)讀 傳遞信息到服務(wù)器却汉,從服務(wù)器獲取信息,是前端發(fā)展的重中之重荷并,尤其是現(xiàn)在前后端分離的大前提下合砂,前后端的數(shù)據(jù)交互是...
    Chris_dc閱讀 2,127評(píng)論 1 9
  • 一谈息、ajax 傳統(tǒng) Ajax 指的是 XMLHttpRequest(XHR)缘屹,核心使用XMLHttpRequest...
    Sun____閱讀 501評(píng)論 0 0