用axios封装http请求时,怎样做判断自定义状态值成功后对应的操作?

发布于 2022-09-07 20:43:16 字数 665 浏览 7 评论 0

以前在ajax中可以这样处理

request(param){
    $.ajax{
        type: param.type,
        url: param.url,
        success(res){
            if(res.status === 0){
                typeof param.success === 'function' && param.success(res.data)
            }else if(res.status === 1){
                login()        
            }else if(res.status === 2){
                typeof param.success === 'function' && param.success(res.data)
            }
        },
        error(err){
            typeof param.error === 'function' && param.error(res.err)
        }
    }
} 
   

像上面这种情况,比如状态为0表示成功,然后进行成功后的处理,这在axios中怎么处理呢?

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

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

发布评论

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

评论(5

月下凄凉 2022-09-14 20:43:16

可以添加一个响应拦截器

const instance = axios.create()
// 添加一个响应拦截器
instance.interceptors.response.use(response => {
  window.vm.$loading.hide()
  // 在这里对返回的数据进行处理
  let status = response.status
  let data = response.data
  if (status === 200) {
    if (data.code !== '0000') {
      window.vm.$alert({
        msg: data.desc,
        type: 'danger'
      })
    }
    return Promise.resolve(data)
  } else {
    return Promise.reject(response)
  }
}, error => {
  // response error
  console.log(error)
  window.vm.$loading.hide()
  window.vm.$alert({
    msg: '请求异常,请联系管理员!',
    type: 'danger',
    autoClose: false
  })
  return Promise.reject(error)
})
export default instance
梦萦几度 2022-09-14 20:43:16
async function request(param) {
    let { url, method, success, error } = param
    try {
        let { data, status, error } = await axios({ method, url })
        if (status === 0) {
            typeof success === 'function' && success(data)
        } else if (status === 1) {
            login()
        } else if (status === 2) {
            typeof success === 'function' && success(data)
        }
    } catch (err) {
        typeof error === 'function' && error(err)
    }
}
桃气十足 2022-09-14 20:43:16
axios(url, options)
    .then(res => {
        if (res.status === 1) {
            return res.data;
        }
        // 其他类似
    })
    .catch(console.error.bind(console))
-小熊_ 2022-09-14 20:43:16
http.post = (url, data) => {
  return new Promise((resolve, reject) => {
        axios.post(requestUrl + url, qs.stringify(data),{
          headers: {
              
          }
      }).then(res => {
          if (res.status === 200) {
            resolve (res.data)
          } else {
            alert ('request failed, please try again later')
          }
      })
  })
}; 

是这个意思嘛?

聽兲甴掵 2022-09-14 20:43:16
import axios from 'axios'

//请求拦截
axios.interceptors.request.use(function(config){
    ...
    return config
})

//响应拦截
axios.interceptors.response.use(function(config){
    ...    
    return config
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文