Vue3發(fā)送post請求出現(xiàn)400?Bad?Request報錯的解決辦法
查了一下網(wǎng)上資料,報400一般無非就是兩種:
1. Bad Request:“錯誤的請求"
2. Invalid Hostname:"不存在的域名”
在這里我的報錯是因為前端請求頭的content-type和后端不一致。
一般后端默認的內(nèi)容類型是 application/x-www-form-urlencoded,而axios默認的是 applecation/json。
但是也有例外,要根據(jù)后端的注解來區(qū)分我們要轉(zhuǎn)換的類型。
根據(jù)上一篇筆記上說的:
@RequestBody 用 content-type = application/json @RequestParam 用 content-type = application/x-www-form-urlencoded
自行更改請求頭。
經(jīng)過查資料發(fā)現(xiàn)它還會有兩種報錯。
1.傳參錯誤
前端提交的數(shù)據(jù)的字段名稱或者字段類型和后端的實體類不一致,導致無法封裝。
解決:對照字段名稱、類型與后端需要的保持一致
2.前后端數(shù)據(jù)格式不一致
前端提交到后臺的數(shù)據(jù)應該是json字符串類型,而前端沒有將對象轉(zhuǎn)換成字符串類型。
解決:使用 qs.stringify() 將前端傳遞的對象轉(zhuǎn)換為字符串,格式化傳遞給后臺的參數(shù)
在ajax請求中可以使用 JSON.stringify()
// 要序列化的數(shù)據(jù) var a = {name:'hehe',age:10}; // qs.stringify 序列化結(jié)果,qs.js支持跟多的類型和方法。 name=hehe&age=10 // JSON.stringify序列化結(jié)果 "{"a":"hehe","age":10}"
另外使用qs.stringify() 序列化以后,再調(diào)用接口,數(shù)據(jù)傳輸模式會自動改成 content-type = application/x-www-form-urlencoded ,這樣就與后端一致。
總結(jié)
到此這篇關于Vue3發(fā)送post請求出現(xiàn)400 Bad Request報錯的解決辦法的文章就介紹到這了,更多相關Vue3報錯400 Bad Request內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設備-rtmp流)
這篇文章主要介紹了vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設備-rtmp流),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08Vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁的示例代碼
本文主要介紹了Vue實現(xiàn)未登錄跳轉(zhuǎn)到登錄頁的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08Vue3如何理解ref toRef和toRefs的區(qū)別
本文主要介紹了Vue3如何理解ref toRef和toRefs的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12