当前位置: 首页 > 知识库问答 >
问题:

如何从Axios中的HTTP错误中获取状态代码?

范鸿
2023-03-14

这可能看起来很愚蠢,但是我试图在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'}

共有3个答案

别永年
2023-03-14

正如@Nick所说,当你使用控制台时,你会看到结果。日志JavaScript错误对象取决于控制台的确切实现。日志,它的变化和(imo)使检查错误变得异常烦人。

如果您想绕过toString()方法查看完整的Error对象及其携带的所有信息,您可以使用JSON. stringify:

axios.get('/foo')
  .catch(function (error) {
    console.log(JSON.stringify(error))
  });
苏彦君
2023-03-14

使用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)
  })
巫朝明
2023-03-14

您看到的是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”。我遇到了错误 这是我的代码: 谢谢你的帮助。