【发布时间】:2018-09-28 20:32:15
【问题描述】:
我需要捕获错误 401 响应代码,以便在从令牌端点获取新令牌后重试。我正在使用 fetch 方法从 API 获取数据。
const request: Request = new Request(url.toString(), {
headers: this.defaultRequestHeaders,
method: "get",
mode: "cors"
});
const headers: Headers = new Headers({
"Accept": "application/json",
"Content-Type": "application/json"
});
fetch(request)
.then(function(response)
{
///Logic code
})
.catch(function(error)
{
///if status code 401. Need help here
});
【问题讨论】:
-
尝试获取属性error.status
-
如果我从文档中理解正确,如果服务器返回有效消息(其中
401是一个),则不会抛出error,因此请尝试.then(message => if( response.status === 401 ){ ... respond to the status code... })。 -
你打败了我,尽管将
message替换为response- 你也可以检查response.ok,它决定了状态是否在200-299范围内。 -
@VikrantSingh 你在说什么?成功的请求在
then中,返回401的成功请求仍将在then子句中。catch用于某些错误,但据我所知,dos 中的状态码并非如此。 -
@VikrantSingh 没有人说它会进入 catch 块,
catch块用于发生实际错误时 - 就像什么都没有返回或有安全问题。 401 状态很简单,“是的,我们完成了这个请求,它告诉我们 '401'”,所以 401 是一个有效的响应并进入then,bro。
标签: javascript api