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

axios如何在. cat()中获取状态代码?

柳豪
2023-03-14

在Axios文档中:

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });

我们知道我们可以在中捕获错误。catch()方法。

但是当我使用Django Rest框架作为后端API提供程序时。它只提供数据,没有状态:

您会看到错误

{username: ["A user with that username already exists."]}  

但在浏览器中,我们可以知道状态码:

在提出这个问题之前,我已经阅读了如何从Axios中的http错误中获取状态代码?这个帖子。

但是这篇文章似乎和我的不同。

编辑-1

在我的Django Rest框架项目中:

观点:

class UserCreateAPIView(CreateAPIView):
    serializer_class = UserCreateSerializer
    permission_classes = [AllowAny]
    queryset = User.objects.all()

序列化程序:

class UserCreateSerializer(ModelSerializer):
    """
    user register
    """
    class Meta:
        model = User
        fields = [
            'username',
            'wechat_num',
            'password',
        ]
        extra_kwargs = {
            "password":{"write_only":True}
        }

    def create(self, validated_data):
        username=validated_data.pop('username')
        wechat_num = validated_data.pop('wechat_num')
        password=validated_data.pop('password')

        user_obj = User(
            username=username,
            wechat_num=wechat_num,
        )
        user_obj.set_password(password)
        user_obj.save()
        group=getOrCreateGroupByName(USER_GROUP_CHOICES.User)
        user_obj.groups.add(group)

        return validated_data

共有1个答案

黎奇思
2023-03-14

我在拦截器配置中发现:

Axios.interceptors.response.use(
  res => {

    return res;
  },
  error => {

    return Promise.reject(error.response.data)
  }
);

我返回了错误。回答数据直接,我可以将其配置为错误。响应,或错误

如果我配置错误。响应,然后在中。catch()我可以像下面这样操控:

console.log(response.data);
console.log(response.status);
console.log(response.headers);
 类似资料:
  • 这可能看起来很愚蠢,但是我试图在Axios中请求失败时获取错误数据。 是否可以获取一个可能包含状态代码和内容的对象,而不是字符串?例如:

  • 问题内容: 我对如何使用axios上传进度事件感到有些困惑。实际上,我正在将大量文件存储到AWS s3中。为此,如何获得上传进度?我需要这个功能 目前,我的发帖请求是这样的: 问题答案: Axios存储库中有一个明确的示例,说明了如何执行此操作:https : //github.com/mzabriskie/axios/blob/master/examples/upload/index.html

  • 问题内容: 我想记录301s和302s,但是找不到在Client.Do,Get,doFollowingRedirects,CheckRedirect中读取响应状态代码的方法。我是否必须自己实施重定向才能实现这一目标? 问题答案: 该类型允许您指定自定义传输方式,这应允许您执行后续操作。应该执行以下操作: (如果仅支持链接到默认传输,则可以稍微简化一下)。 然后,您可以使用此传输方式创建客户端,并记

  • 有没有办法获取HTTP状态码(比如200400…)在观察实时数据之前? 这是我的实现: 后果 基本存储库 我的存储库 视图模型 在我的代码中,我执行以下操作: 在哪里可以查看状态代码?我不知道在哪里实现状态码返回。

  • 问题内容: 调用JAX-WS端点时,如何获取HTTP响应代码? 在下面的示例代码中,在调用Web服务时可能会引发Exception,例如或。 在这种情况下,如何从HTTP响应中获取HTTP状态代码? 问题答案: 完成@Praveen答案后,您必须将变成原始值,然后从上下文中获取值。 如果您在托管的Web服务客户端中发生异常,请不要忘记将事务标记为回滚。

  • 我希望检索HTTP响应状态代码(例如,400、401、403、503等),以防请求失败(理想情况下也是成功)。在这段代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户错误键入密码时向用户发送身份验证失败的消息。 不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409: 此外,在发生错误时检索HTTP正文会很好,因为我的服务器端将在那里放置错误的文本描述。 问题 是否可以