在與后端的調(diào)試中發(fā)現(xiàn)一個(gè)問(wèn)題,使用post發(fā)請(qǐng)求時(shí),發(fā)送的params后端一直說(shuō)沒(méi)收到參數(shù),F(xiàn)12發(fā)現(xiàn)參數(shù)確確實(shí)實(shí)已經(jīng)發(fā)送了。如圖:

使用swagger發(fā)送同樣的參數(shù)請(qǐng)求卻可以接收到:

通過(guò)比對(duì)發(fā)現(xiàn),兩者的不同在于一個(gè)參數(shù)類型是Form Data,一個(gè)是Request Payload。什么意思呢?
百度一下 你就知道
Request Payload更準(zhǔn)確的說(shuō)是http request的payload body。一般用在數(shù)據(jù)通過(guò)POST請(qǐng)求或者PUT請(qǐng)求。它是HTTP請(qǐng)求中空行的后面那部分。(PS:這里涉及一個(gè)http常被問(wèn)到的問(wèn)題,http請(qǐng)求由哪幾部分組成,一般是請(qǐng)求行,請(qǐng)求頭,空行,請(qǐng)求體。payload body應(yīng)該是對(duì)應(yīng)請(qǐng)求體。)
一個(gè)請(qǐng)求伴隨著header設(shè)置為Content-Type: application/json時(shí),參數(shù)看起來(lái)是這樣的:
POST /some-path HTTP/1.1 Content-Type: application/json { "foo" : "bar", "name" : "John" }
如果你只是正常的請(qǐng)求一個(gè)ajax請(qǐng)求,瀏覽器是會(huì)把你提交的params作為Payload展示出來(lái),因?yàn)樗膊恢纏arams來(lái)自哪里。
但如果你提交的請(qǐng)求設(shè)置了method="POST" 并且header設(shè)置了Content-Type: application/x-www-form-urlencoded或者Content-Type: multipart/form-data,那么你的請(qǐng)求看起來(lái)就是下面這樣的,類似GET請(qǐng)求里的參數(shù)拼接:
POST /some-path HTTP/1.1 Content-Type: application/x-www-form-urlencoded foo=bar&name=Jack
這里的form data就是request payload,在這里瀏覽器知道的更多:他知道bar是表單foo的值Jack是name的值,所以這里做了展示。
在回到之前的問(wèn)題,通過(guò)觀察圖片發(fā)現(xiàn),兩者的區(qū)別確實(shí)是因?yàn)閔eader中Content Type的值設(shè)置不同導(dǎo)致的:

通過(guò)查看request.js證實(shí)了這個(gè)驗(yàn)證:

解決辦法:
在請(qǐng)求中,設(shè)置一個(gè)header即可
