本Vue菜鸟近日接手一个Vue项目的拓展,在对接后端接口的时候在用Axios传String的时候发现后端收到的字符串无端端多了个等号或者一组双引号、顿号。翻了几百个论坛都没找到答案,但最后在Github上找到了.
原帖地址
后端接口代码
public Result login(@RequestBody String account, HttpSession session)
Typescript代码
login({ commit }, userInfo) {
const { qq } = userInfo
return new Promise((resolve, reject) => {
login(qq).then(response => {
const { data } = response
commit('SET_USERNAME', data.username)
commit('SET_NICKNAME', data.nickname)
commit('SET_AVATAR', data.avatar)
commit('SET_EMAIL', data.email === null ? '' : data.email)
commit('SET_SEX', data.sex)
sessionStorage.setItem('username', data.username)
resolve()
}).catch(error => {
reject(error)
})
})
}
Axios代码
export function login(data) {
return request({
url: '/user/QQ/login',
method: 'post',
headers: {
'Content-Type': 'application/json'
},
data
})
}
更正方法
将Axios中的Content-Type
改成text/plain
即可
export function login(data) {
return request({
url: '/user/QQ/login',
method: 'post',
headers: {
'Content-Type': 'text/plain'
},
data
})
}
错误原因
字符串不是JSON格式的字符串,解析的时候不能被服务端解析成标准JSON格式
所以可以使用标准JSON解决或在headers里面指定负载格式