很多帖子、问题和文章都解释了如何处理 fetch 请求中的 HTTP 错误,但解决方案仅指向logging
或仅使用答案的文本,但我想获取响应详细信息(状态 + statusText)和响应文本(由服务器)
我想要一个通用的fetch_api
,然后我可以在我的不同组件中使用它。对于有效的响应,它正在工作,但对于错误,我无法从服务器获取详细信息+文本,因为我需要返回一个rejected Promise
但我无法使其工作,这是我的尝试
响应状态
response.statusText
响应.url
response.text() // 这是一个 Promise,我无法得到它以及细节
static fetch_api(url, method = 'get') {
return fetch(url, {method: method})
.then(res => {
if (res.ok) return res.json();
throw res;
})
.then((result) => result
, (error) => {
const err = ("[" + error.status + ":" + error.statusText + "] while fetching " +
error.url + ", response is " + error.text()) // how to get server text
return Promise.reject(err) // ok but server text missing
//Er [404:NOT FOUND] while ... is [object Promise]
return Promise.reject().then(() => error.text()) // Not ok
return Promise.reject(error.status) // OK but need all
return Promise.reject(error.statusText) // OK but need all
}
)
}
// USE
fetchStatus() {
App.fetch_get(host + "/statusERROR")
.then(result => this.setState({isLoaded: true, modules: result}))
.catch(error => this.setState({isLoaded: true, error: {message: error}}))
}
尚方宝剑之说
相关分类