axios如何获取后端接口返回的状态码以及相关信息

发布于 2022-09-06 05:02:04 字数 1722 浏览 12 评论 0

如题:axios如何获取后端接口返回的状态码以及相关信息

axios返回的有两个函数

axios.get("/internal/user/check_mobile_and_sent_code",{withCredentials:true,params:{mobile:formInline.mobile}}).then(res=>{
                        console.log(res);
                        //if(res.result==true){
                            if (!this.timer) {
                                this.count = this.TIME_COUNT;
                                this.show = false;
                                this.timer = setInterval(() => {
                                    if (this.count > 0 && this.count <= this.TIME_COUNT) {
                                        this.count--;
                                    } else {
                                        this.show = true;
                                        clearInterval(this.timer);
                                        this.timer = null;
                                    }
                                }, 1000)
                            }
                        //}
                    }).catch(error=>{
                        console.log(error);
                    })

我想判断当 返回400或者500的时候 输出相应的返回信息,请问大神们该怎么判断呀?
console.log(error);这个error返回的是这个:

clipboard.png

而后台实际返回的是这个:

{
  "timestamp": "2017-09-15T08:30:56Z",
  "status": 400,
  "error": "Bad Request",
  "exception": "com.xinwenhd.common.utils.BadReqExcption",
  "message": "Bad Request",
  "path": "/internal/user/check_mobile_and_sent_code",
  "errorMassage": "手机号已存在",
  "errorCode": "MOBILE_EXIST"
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

メ斷腸人バ 2022-09-13 05:02:04
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);
  });

Handling Errors https://github.com/mzabriskie...

梦旅人picnic 2022-09-13 05:02:04

返回值 res 就是包含 status 的对象, 直接使用if(res.status === 400)就是了。

{
  "timestamp": "2017-09-15T08:30:56Z",
  "status": 400, // 看这里
  "error": "Bad Request",
  "exception": "com.xinwenhd.common.utils.BadReqExcption",
  "message": "Bad Request",
  "path": "/internal/user/check_mobile_and_sent_code",
  "errorMassage": "手机号已存在",
  "errorCode": "MOBILE_EXIST"
}
跨年 2022-09-13 05:02:04

error.response.status 就是了

滥情稳全场 2022-09-13 05:02:04

常规的HTTP状态码本身有意义

  • 2XX:请求成功
  • 3XX:重定向
  • 4XX:客户端错误
  • 5XX:服务器端错误

根据问题并结合自身工作开发经验,我觉得题主可能需要一个封装过的返回结果,简单来说就是除了通信问题外的自定义错误情况(比如问题中的400 —— 手机号已存在)放在一个data字段中,然后包在200的http码中返回给到前端

{
    code: 200,
    data: {
        timestamp: '',
        status: 400,
        errorMessage: '手机号已存在'
        // ...
    }
}

类似于这种格式的返回结果,当然这只是一种思路。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文