async function checkToken(token) {
const result = await superagent
.post(`${config.serviceUrl}/check_token`)
.send({token});
return result.body;
}
如果此调用将返回401,则默认选项会抛出异常,这不是我所期望的。 API i调用也使用HTTP状态消息作为主体来提供信息,我只需要正文部分。
http状态401的响应是
{
"data": null,
"error": {
"code": "INVALID_TOKEN",
"message": "Token is not valid"
}
}
目前,为了得到这个,我需要用try ... catch
包装所有超级调用async function checkToken(token) {
let result = null;
try {
result = await superagent
.post(`${config.serviceUrl}/check_token`)
.send({token});
} catch (e) {
result = e.response;
}
return result.body;
}
任何方式让第一个样本工作并返回JSON没有查看HTTP状态?
答案 0 :(得分:1)
试试这个
async function checkToken(token) {
const result = await superagent
.post(`${config.serviceUrl}/check_token`)
.send({token}).then(v=>v).catch(v=>v);
return result.body;
}
答案 1 :(得分:1)
默认情况下,Superagent会将每个4xx和5xx响应视为错误。但是,您可以使用.ok
告诉它,您认为哪些回复是错误的。
文档(https://visionmedia.github.io/superagent/#error-handling),
中的示例示例request.get('/404')
.ok(res => res.status < 500)
.then(response => {
// reads 404 page as a successful response
})
如果.ok
内的函数返回true,则不会将其视为错误情况。