[HTTP] GET請(qǐng)求的body能否攜帶數(shù)據(jù)?
在與后端對(duì)接口的時(shí)候,有個(gè)GET分頁(yè)接口,需要傳pageSize,currentPage等參數(shù),這種不敏感的數(shù)據(jù)其實(shí)直接拼接在url上面就好了,但是后端可能出于開(kāi)發(fā)習(xí)慣就把接口的這些參數(shù)放在了body上,并在postman或者apifox上測(cè)試沒(méi)毛病,就讓前端開(kāi)始對(duì)接。前端在對(duì)接的過(guò)程中發(fā)現(xiàn)添加到body中的數(shù)據(jù)發(fā)送失敗。
所以GET請(qǐng)求的body數(shù)據(jù)是如何被處理的?
RFC規(guī)范并沒(méi)有說(shuō)明GET請(qǐng)求不能攜帶body。
而前端(瀏覽器環(huán)境)的網(wǎng)絡(luò)請(qǐng)求,不管用了什么第三方網(wǎng)絡(luò)請(qǐng)求庫(kù),最后使用的API無(wú)外乎XHR和fetch API。
- 對(duì)于XHR,在WHATWG標(biāo)準(zhǔn)中,說(shuō)明了如果請(qǐng)求方法為GET或者HEAD,那么body會(huì)被設(shè)置為null。
- 而對(duì)于fetch API,在WHATWG標(biāo)準(zhǔn)中,如果設(shè)置了body并且請(qǐng)求方法是GET或HEAD,那么會(huì)直接拋出異常。
由于postman和apifox的實(shí)現(xiàn)是不遵循WHATWG標(biāo)準(zhǔn)的,所以在這些工具中測(cè)試GET請(qǐng)求可以把數(shù)據(jù)放到body里。
但是對(duì)于前端開(kāi)發(fā)(瀏覽器環(huán)境)來(lái)說(shuō),GET請(qǐng)求是不能把數(shù)據(jù)放到body里的。
根據(jù)實(shí)際需求,可以考慮把參數(shù)拼接到url上,或者如果堅(jiān)持將數(shù)據(jù)攜帶在body中,可以考慮使用POST方法。

浙公網(wǎng)安備 33010602011771號(hào)