后端用的框架是 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