Vue中axios请求后res返回204,no content,res.data为undefind
一直以为后台只要返回200-299之间的状态码就没问题,就是这个错误认知,花了三个小时终于想到解决办法
附上axios 地址 axios中文文档|axios中文网 | axios (axios-js.com)
前面一直想着后台能接收处理请求,肯定不是后台问题,一直花时间配置前端请求指令,以及设置响应拦截器查看情况。突然想到其实是自己在后台设置了响应状态码就是204
router.get('/getGoods', async (ctx, next) => {
try {
let SearchLoststatus = 11;
let SearchLoststatusMessage = ''
let SearchFoundstatus = 11;
let SearchFoundstatusMessage = ''
let LostMessage = {}
//wu_dehong.`lost_list`
let FoundMessage = {}
//wu_dehong.`found_list`
await new Promise((resolve, reject) => {
pool.query('select * from wu_dehong.`lost_list` where isdelete=0;', (err, result) => {
if (err) {
SearchLoststatus = 500;
SearchLoststatusMessage = '数据库查询 失物 信息失败'
console.log('数据库查询失物信息失败')
reject()
return
}
if (result.length == 0) {//错误演示,改为100,成功运行返回响应体
SearchLoststatus = 200;
SearchLoststatusMessage = '数据库中未删除的失物信息为空'
console.log('数据库中未删除的失物信息为空')
} else {//错误演示,改为100,成功运行返回响应体
SearchLoststatus = 201;
SearchLoststatusMessage = '查询未删除的失物信息 成 功'
// console.log(result)
LostMessage = { ...result }
}
resolve()
})
})
/* await new Promise((resolve, reject) => {
if (Object.getOwnPropertyNames(LostMessage).length == 0) {
reject()
return
}
resolve()
for (let key in LostMessage) {
fs.readFileSync(`${LostMessage[key].img}`, 'utf8', function (err, result) {
if (err) {
return console.log('读取失物图片信息失败!', err)
}
if (result) {
LostMessage[key].img = result
}
})
}
}) */
await new Promise((resolve, reject) => {
pool.query('SELECT * FROM wu_dehong.found_list where isdelete=0;', (err, result) => {
if (err) {//错误演示,改为100,成功运行返回响应体
SearchFoundstatus = 0;
SearchFoundstatusMessage = '数据库查询 招领 信息失败'
console.log('数据库查询 招领 信息失败')
reject()
return
}
if (result.length == 0) {
SearchFoundstatus = 1
SearchFoundstatusMessage = '数据库中未删除的招领信息为空'
console.log('数据库中未删除的招领信息为空')
} else {//错误演示,改为100,成功运行返回响应体
SearchFoundstatus = 3
SearchFoundstatusMessage = '查询未删除的招领信息 成 功'
// console.log(result)
FoundMessage = { ...result }
}
resolve()
})
})
/* await new Promise((resolve, reject) => {
if (Object.getOwnPropertyNames(FoundMessage).length == 0) {
reject()
return
}
resolve()
for (let key in FoundMessage) {
fs.readFileSync(`${FoundMessage[key].img}`, 'utf8', function (err, result) {
if (err) {
return console.log('读取招领图片信息失败', err)
}
if (result) {
FoundMessage[key].img = result
}
})
}
}) */
//我说为什么总是返回204,res.data为undefind,排查下来原来是自己挖坑 ctx.response.status = SearchLoststatus + SearchFoundstatus
ctx.response.statusMessage = SearchLoststatusMessage + '————' + SearchFoundstatusMessage
ctx.response.body = {
LostMessage,
FoundMessage
}
console.log(ctx.response.body)
// Object.getOwnPropertyNames(obj).length==0
} catch (error) {
console.log(error, '初始化搜索物品信息GET请求失败')
}
})