You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt Axios模块读取状态码:处理Rest API多成功状态码场景

在Nuxt Axios中读取响应状态码区分200/202响应

嘿,刚好碰到过类似的场景,我来给你捋清楚怎么解决这个问题!

你现在用的this.$axios.$get()是Nuxt Axios提供的快捷封装方法,它会直接返回响应体(也就是response.data),所以拿不到状态码这类元信息。如果要获取完整的响应详情(包括状态码、响应头这些),你需要改用不带$前缀的原生Axios方法,比如this.$axios.get()。

改造后的代码示例

this.$axios.get('/Controller/?id=1')
  .then((fullResponse) => {
    // 从完整响应对象中取出状态码和响应体
    const { status, data } = fullResponse;

    if (status === 202) {
      // 处理202 Accepted的场景,比如data是"Queued"
      console.log('请求已进入队列', data);
      // 执行你的排队后操作
    } else if (status === 200) {
      // 处理200 OK的场景,比如data是令牌值
      console.log('请求成功,拿到令牌', data);
      // 执行令牌相关操作
    }
  })
  .catch((error) => {
    // 别忘了处理请求失败的情况
    console.error('请求出错啦', error);
  });

补充:全局拦截器处理(可选)

如果你的项目里很多地方都需要区分这两种状态码,可以在Axios拦截器里统一处理,比如创建一个plugins/axios.js插件:

export default function ({ $axios }) {
  $axios.interceptors.response.use(
    (response) => {
      // 全局捕获响应状态码
      if (response.status === 202) {
        // 这里可以做全局提示或者标记
        console.log('提示:请求已排队处理');
      }
      return response;
    },
    (error) => {
      return Promise.reject(error);
    }
  );
}

然后在nuxt.config.js里注册这个插件:

export default {
  plugins: ['~/plugins/axios.js']
}

简单说就是:用不带$的Axios方法拿到完整响应对象,从中读取status字段来区分200和202的情况,再结合响应体做对应的业务逻辑就好啦~

内容的提问来源于stack exchange,提问作者CodeHacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:47:20