查了一下網(wǎng)上資料,報(bào)400一般無(wú)非就是兩種:
1. Bad Request:“錯(cuò)誤的請(qǐng)求"
2. Invalid Hostname:"不存在的域名”
在這里我的報(bào)錯(cuò)是因?yàn)榍岸苏?qǐng)求頭的content-type和后端不一致。
一般后端默認(rèn)的內(nèi)容類(lèi)型是 application/x-www-form-urlencoded,而axios默認(rèn)的是?applecation/json。
但是也有例外,要根據(jù)后端的注解來(lái)區(qū)分我們要轉(zhuǎn)換的類(lèi)型。
根據(jù)上一篇筆記上說(shuō)的:
@RequestBody 用 content-type =?application/json?
@RequestParam 用? content-type = application/x-www-form-urlencoded
自行更改請(qǐng)求頭。
經(jīng)過(guò)查資料發(fā)現(xiàn)它還會(huì)有兩種報(bào)錯(cuò)。
1.傳參錯(cuò)誤
前端提交的數(shù)據(jù)的字段名稱(chēng)或者字段類(lèi)型和后端的實(shí)體類(lèi)不一致,導(dǎo)致無(wú)法封裝。
解決:對(duì)照字段名稱(chēng)、類(lèi)型與后端需要的保持一致
2.前后端數(shù)據(jù)格式不一致
前端提交到后臺(tái)的數(shù)據(jù)應(yīng)該是json字符串類(lèi)型,而前端沒(méi)有將對(duì)象轉(zhuǎn)換成字符串類(lèi)型。
解決:使用?qs.stringify() 將前端傳遞的對(duì)象轉(zhuǎn)換為字符串,格式化傳遞給后臺(tái)的參數(shù)
在ajax請(qǐng)求中可以使用 JSON.stringify()?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-493997.html
// 要序列化的數(shù)據(jù)
var a = {name:'hehe',age:10};
// qs.stringify 序列化結(jié)果,qs.js支持跟多的類(lèi)型和方法。
name=hehe&age=10
// JSON.stringify序列化結(jié)果
"{"a":"hehe","age":10}"
另外使用qs.stringify() 序列化以后,再調(diào)用接口,數(shù)據(jù)傳輸模式會(huì)自動(dòng)改成 content-type = application/x-www-form-urlencoded ,這樣就與后端一致。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-493997.html
到了這里,關(guān)于【Vue3】發(fā)送post請(qǐng)求出現(xiàn)400 Bad Request 報(bào)錯(cuò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!