这可能看起来很愚蠢,但是我试图在Axios中请求失败时获取错误数据。
axios
.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error); //Logs a string: Error: Request failed with status code 404
});
是否可以获取一个可能包含状态代码和内容的对象,而不是字符串?例如:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
正如@Nick所说,当你使用控制台时,你会看到结果。日志
JavaScript错误
对象取决于控制台的确切实现。日志
,它的变化和(imo)使检查错误变得异常烦人。
如果您想绕过toString()
方法查看完整的Error
对象及其携带的所有信息,您可以使用JSON. stringify:
axios.get('/foo')
.catch(function (error) {
console.log(JSON.stringify(error))
});
使用TypeScript,很容易找到您想要的正确类型。
这使一切变得更容易,因为您可以通过自动完成获得类型的所有属性,因此您可以知道响应和错误的正确结构。
import { AxiosResponse, AxiosError } from 'axios'
axios.get('foo.com')
.then((response: AxiosResponse) => {
// Handle response
})
.catch((reason: AxiosError) => {
if (reason.response!.status === 400) {
// Handle 400
} else {
// Handle else
}
console.log(reason.message)
})
此外,您还可以向这两种类型传递一个参数,以告知响应中的预期内容。数据
如是:
import { AxiosResponse, AxiosError } from 'axios'
axios.get('foo.com')
.then((response: AxiosResponse<{user:{name:string}}>) => {
// Handle response
})
.catch((reason: AxiosError<{additionalInfo:string}>) => {
if (reason.response!.status === 400) {
// Handle 400
} else {
// Handle else
}
console.log(reason.message)
})
您看到的是error
对象的toString
方法返回的字符串。(错误
不是字符串。)
如果已从服务器收到响应,则错误
对象将包含响应
属性:
axios.get('/foo')
.catch(function (error) {
if (error.response) {
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
}
});
在Axios文档中: 我们知道我们可以在
如何从的结果中获取HTTP状态?
问题内容: 我想记录301s和302s,但是找不到在Client.Do,Get,doFollowingRedirects,CheckRedirect中读取响应状态代码的方法。我是否必须自己实施重定向才能实现这一目标? 问题答案: 该类型允许您指定自定义传输方式,这应允许您执行后续操作。应该执行以下操作: (如果仅支持链接到默认传输,则可以稍微简化一下)。 然后,您可以使用此传输方式创建客户端,并记
我正在尝试从站点获取数据。当我在Intellij IDEA中使用此代码时,一切正常,但当我在Android Studio和real device中使用此代码时,我得到: org.jsoup.HttpStatusException:获取URL的HTTP错误。状态=403 这是我的代码: 我找到的所有信息都是关于“userAgent()”方法的,但它没有帮助。 UPD:对不起,这是我的问题。正确的网址
我想连接到https://www.notebooksbilliger.de/但对于以下代码,它不起作用: 为什么我得到405状态?我如何解决这个问题? 非常感谢... 塞巴斯蒂安
我正在写一个小程序,我想从网站上获取一个元素。我已经学习了许多教程来学习如何使用jSoup编写此代码。我想打印的一个例子是“2018年11月19日星期一下午3:00至7:00”。我遇到了错误 这是我的代码: 谢谢你的帮助。