当HTTP状态不是200时,如何在前端代码中获取后端发送的JSON对象?
当我的后端发送200个响应时,我可以通过执行以下操作来显示返回的JSON数据:
后端
res.status(200).json({status: 'Information found'})
前端
.then(data => console.log(data.status)) // Information found
但是,当我尝试以400或404状态执行相同操作时,无法获取返回的JSON。
后端
res.status(404).json({error: 'No information found'});
前端
.catch(error => console.log('Error from backend', error))
结果
我首先尝试了error.error,但这是不确定的。
200状态返回的区别是什么?如何在前端获取从后端发送的消息?
编辑
前端
axios.post('https://firebaselink.net/getTestData', { id: orderNumber })
.then(data => console.log(data.status))
.catch(error => console.error(error))
后端
export const getTestData = functions.https.onRequest((req, res) => {
cors(req, res, () => {
const id = req.body.id;
admin.database().ref(`data/${id}`).once('value')
.then(snapshot => {
if(snapshot) res.status(200).json({status: "Information found"})
else res.status(404).json({error: "Information not found"})
}).catch(error => res.status(500).json({error: 'Internal error}))
})
})
答案 0 :(得分:-2)
问:我尝试了error.error,但未定义。如何打印我的错误?
A: Javascript
未键入,表示object
可以是任何东西。最好的解决方案是执行console.log(JSON.stringify(error, null, 2)
以查看其具有的属性,然后访问以打印出消息。
error
对象通常具有message
属性。
参考: