问题: console.log(res.data)
给出的结果与 console.log(JSON.parse(res.request.response))
不同。
我正在从我的 Next.js 应用程序向内部 API 发出发布请求。它是对返回列表对象的 REST 端点的请求。数据应如下所示:
[
{
"views": [ { "data1": 1 ...}, ...],
"otherViews": [ {"data2": 1, ...}, ...],
},
...
]
我正在以典型的 then/catch
格式访问此请求中的数据。所以
let internalServerResponse = axios.post(endpoint, body, config)
return internalServerResponse
.then(res => {
let errors = null;
let data = null;
if (res.data.errors) {
errors = res.data.errors;
} else {
data = res.data
}
return {
errors: errors,
data: data
}
} )
.catch(err => {
return {
errors: err,
data: null
}
})
问题出现在 views
列表总是返回一个空列表,而 otherViews
列表似乎不受影响。
{
"identifier": "...",
"views": [],
"otherViews": [
{
"field1": "...",
"field2": "...",
"field3": "..."
},
...
]
}
查看来自服务器的 res.request.response
,我看到 views
列表实际上不是空的(如预期的那样),并且视图列表中对象的格式类似于otherViews
列表。返回的响应 (res.request.response
) 是有效的 JSON。
JSON.parse(res.request.response)
的控制台日志输出:
{
"identifier": "...",
"views": [
{
"field1": "...",
"field2": "...",
"field3": "..."
},
...
],
"otherViews": [
{
"field1": "...",
"field2": "...",
"field3": "..."
},
...
]
}
我的尝试
为了调试,我试过:
res.data
以提供缺失的视图列表JSON.parse(res.request.response)
data = JSON.parse(res.request.response)
,它仍然以某种方式给出了缺失的视图列表我完全被难住了。我有两个问题:
答案 0 :(得分:0)