use fetch post send json can not work

情景描述

  • create React app中使用fetch 發(fā)送跨域http請(qǐng)求
fetch('/todos',{
            method: 'POST',
            headers: new Headers({
                'Content-Type': 'application/json'
            })
            body:{text,user_id:1}
        }).then(.....)
  • 使用create React app的proxy進(jìn)行請(qǐng)求的跨域轉(zhuǎn)發(fā)
"proxy": "http://localhost:8080"
  • 發(fā)送請(qǐng)求http://localhost:3000/todos返回狀態(tài)碼400
  • 使用postman發(fā)送POST請(qǐng)求http://localhost:8080/todos 選擇raw --> application/json
{
    "text":"1111",
    "user_id":1
}  //成功返回狀態(tài)碼201

矛盾

  • postman和使用fetch發(fā)送的請(qǐng)求body類型完全一致路徑完全一致佳遂,按照道理來說如果postman能夠成功贷腕,那么fetch一定也能成功馆纳,那么為什么使用fetch發(fā)送會(huì)出現(xiàn)request body missing 導(dǎo)致400錯(cuò)誤?
  • 問題可能在于:
    • 1.fetch發(fā)送json body的用法有誤
    • 2.postman還設(shè)置了別的header

解決

  • Q1:400狀態(tài)碼代表什么樣的錯(cuò)誤睛琳?
  • A1:400狀態(tài)碼說明你發(fā)送的請(qǐng)求服務(wù)器接收到了但是不能識(shí)別請(qǐng)求內(nèi)容。

  • Q2:postman選擇的raw application/json到底是什么格式的請(qǐng)求?
  • A2:body tab中的4中不同方式虐呻,會(huì)對(duì)應(yīng)著不同的head content-type,選擇raw就可以向面板中填入任何類型的數(shù)據(jù)寞秃,通過選擇application/json確定postman會(huì)發(fā)送一個(gè)使用json解析器能夠解析的實(shí)體到服務(wù)器斟叼。

  • Q3:請(qǐng)求head中content-type有什么作用?
  • A3:Content-Type屬性作用其實(shí)是:當(dāng)你發(fā)送請(qǐng)求設(shè)置Content-Type:application/json春寿,就是相當(dāng)于告訴服務(wù)器朗涩,你應(yīng)該采用解析json的方式解析我的請(qǐng)求體,但是請(qǐng)求體是否是json格式就不一定了绑改。如果未指定 ContentType谢床,默認(rèn)為text/html。因此說明此時(shí)我告訴了服務(wù)器用json解析器解析body厘线。

  • Q4:fetch post json的標(biāo)準(zhǔn)方式是什么呢识腿?

  • A4:查詢官網(wǎng)發(fā)現(xiàn)

    fetch('/users', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      name: 'Hubot',
      login: 'hubot',
    })
    })
    

    發(fā)現(xiàn)官網(wǎng)上使用了json.stringify,因此確定問題原因:我沒有使用fetch正確的傳送json body的格式造壮。


  • Q5:那么為什么postman成功了渡讼,但是fetch沒有?
  • A5:首先postman一定能夠把你輸入的對(duì)象變成使用Application/json就能解析的形式發(fā)送給服務(wù)器耳璧,然而這個(gè)過程我們是看不到的成箫。如果僅僅把body寫成相同的樣子,fetch會(huì)把這個(gè)body包裝成什么樣子發(fā)走我們不知道旨枯。因此postman和fetch即使body完全一致header完全一致蹬昌,也不一定結(jié)果一樣。fetch需要把body stringify了之后發(fā)走才能使用Application解析攀隔。

我的錯(cuò)誤點(diǎn)

  • 錯(cuò)誤的以為content-type的作用是把body變成某種類型皂贩。其實(shí)他只是告訴服務(wù)器使用哪種方式解析你的body。

反思

  • fetch發(fā)送請(qǐng)求的方式我并不了解昆汹,并且不是很會(huì)使用先紫,只是想當(dāng)然的隨便寫,寫不對(duì)再試再試筹煮。并沒有想到參照官網(wǎng)遮精。

action

  • 使用任何新的東西,如果遇到bug,那么應(yīng)該立刻去看官網(wǎng)對(duì)這種問題的做法本冲。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末准脂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子檬洞,更是在濱河造成了極大的恐慌狸膏,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件添怔,死亡現(xiàn)場離奇詭異湾戳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)广料,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門砾脑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艾杏,你說我怎么就攤上這事韧衣。” “怎么了购桑?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵畅铭,是天一觀的道長。 經(jīng)常有香客問我勃蜘,道長硕噩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任缭贡,我火速辦了婚禮炉擅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匀归。我一直安慰自己,他們只是感情好耗帕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布穆端。 她就那樣靜靜地躺著,像睡著了一般仿便。 火紅的嫁衣襯著肌膚如雪体啰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天嗽仪,我揣著相機(jī)與錄音荒勇,去河邊找鬼。 笑死闻坚,一個(gè)胖子當(dāng)著我的面吹牛沽翔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼仅偎,長吁一口氣:“原來是場噩夢啊……” “哼跨蟹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起橘沥,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤窗轩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后座咆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痢艺,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年介陶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堤舒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斤蔓,死狀恐怖植酥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弦牡,我是刑警寧澤友驮,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布,位于F島的核電站驾锰,受9級(jí)特大地震影響卸留,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椭豫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一耻瑟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赏酥,春花似錦喳整、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呵晨,卻和暖如春魏保,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摸屠。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工谓罗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人季二。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓檩咱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子税手,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

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