前后端分離后請求問題+vue+axios

后端用的框架是 spring mvc ,并且在這個方法上使用了注解 @RequestParam,這個就只能從請求的地址中取出參數(shù),也就是只能從 username=admin&pwd=11111 這種字符串中解析出參數(shù),也就是編碼格式(content-type)為:application/x-www-form-urlencode。(表單form的enctype屬性的編碼方式有兩種:application/x-www-form-urlencode和multipart/form-data),但是axios會把請求的數(shù)據(jù)轉(zhuǎn)換成json格式,即為:application/json;charset=UTF-8
鏈接:http://www.itdecent.cn/p/961a4c97e057

我在項目中遇到了同樣的問題,所以采用以下的方式解決請求人體

一、在axios中,改變Content-Type為application/x-www-form-urlencode

步驟一:引用QS(qs是axios自帶的,直接引入使用即可)

import Qs from 'qs'

步驟二:json格式數(shù)據(jù)轉(zhuǎn)換: params = Qs.stringify(params);

if (params) {
    params = Qs.stringify(params);
  }

步驟三:設(shè)置Content-Type: 'application/x-www-form-urlencoded'

axios({
    method: method,
    url: url,
    data: method === 'POST' || method === 'PUT' ? params : null,
    params: method === 'GET' || method === 'DELETE' ? params : null,
    baseURL: root,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
withCredentials: false
  })

1.1通常情況下,直接使用axios默認的 'Content-Type': 'application/json;charset=UTF-8' 不需要額外的設(shè)置。

java服務(wù)端用的是 @RequestParam(通過字符串解析出參數(shù)) ,其實還有另一種是 @RequestBody(從請求體中獲取參數(shù)),讓后端改成 @RequestBody就可以使用axios默認的 'Content-Type': 。

2、注意前后端分離進行調(diào)試經(jīng)常會報錯,在網(wǎng)上搜索會有很多的解決方法。

但是必須注意的是(必須兩臺電腦無防火墻隔離、在同一工作組,使用ping對方的ip地址,ping通即可)然后再通過代碼。

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容