无法在本机获取中获取提取错误消息
我在react-native应用程序上使用fetch
将帖子发送到nodejs Web服务器,并且我无法检索回其错误消息。
这是我的本机代码:
make_api_call():Promise<Response>{
const options:RequestInit = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({username: 'user', password: 'pass'})
};
return fetch(url, options);
}
login(){
...
from(make_api_call())
.pipe(
map( (res) => {
console.log(res) -- see output below
const data = res.json(); -- weird hex chars
})
, catchError(...)
)
}
后端的响应:
res.status(500).send({message: 'Bad login.'}).end();
return;
以及我得到的回报:
{ type: 'default',
status: 500,
ok: false,
statusText: undefined,
headers:
{ map:
{ 'access-control-allow-credentials': 'true',
connection: 'keep-alive',
'content-type': 'application/json; charset=utf-8',
'x-powered-by': 'Express',
'access-control-allow-headers': 'X-Requested-With, Content-Type, Authorization',
etag: 'W/"22-niDiOYKCTQew5KIlIo6KkEwq7WE"',
'access-control-allow-origin': '*',
date: 'yyyy/dd/mm hh:mm:ss',
'content-length': '34' } },
url: 'http://server/login',
_bodyInit:
{ _data:
{ size: 34,
offset: 0,
blobId: '348BDB26-97F0-4B48-9321-427EF029AAD9',
type: 'application/json',
name: 'login',
__collector: {} } },
_bodyBlob:
{ _data:
{ size: 34,
offset: 0,
blobId: '348BDB26-97F0-4B48-9321-427EF029AAD9',
type: 'application/json',
name: 'login',
__collector: {} } } }
回答如下:res.json()
的返回值是一个承诺-参见https://developer.mozilla/en-US/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful
因此您需要等待res.json()
解析。
尝试
res.json().then(data => {
console.log(data);
});
以确认您正在获取响应数据,然后根据您要如何处理链式承诺来修改代码。