axios???????????????????????????

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了axios???????????????????????????相关的知识,希望对你有一定的参考价值。

???????????????   image   nod   ??????   ??????   charset   use   case   UNC   

axios ??????????????????Promise?????????????????????????????????????????? xhr????????????ajax????????????node?????????????????? http ????????????????????????

axios ?????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????? vue ??????????????????????????????????????????????????? vue-cli???

???????????? axios ??????

???????????????????????? axios ????????????????????? axios ??????????????????????????????????????????????????????????????????????????????????????????????????????

const isDev = process.env.NODE_ENV === ???development???;

const instance = axios.create({
  // baseURL??????proxyTable???????????????????????????????????????????????????????????????????????????????????????????????????url????????????
  baseURL: isDev ? ???/fakeapi??? : ???/api???,
  timeout: 5000,

  validateStatus(status) {
    // ???????????????http status???200-300???????????????????????????????????????????????????????????????????????????(???????????????)
    return status === 200
  },
  headers: {
    // ?????? post ??????????????????
    post: {
      ???Content-Type???: ???application/x-www-form-urlencoded;charset=UTF-8???
    }
  }
});

??????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

qs.stringify ???????????????????????????????????? qs.js - ???????????????url??????

import Qs from ???qs???;

instance.interceptors.request.use(config => {
    // ?????????????????????????????????token???????????????
    config.data = Qs.stringify(config.data, {arrayFormat: ???repeat???, allowDots: true});
    return config;
}, err => {
    return Promise.reject(err);
});

???????????????

import httpErrorHandler from ???./httpErrorHandler.js???;

instance.interceptors.response.use(function(data) {
    // ??????????????????????????????????????????????????????code?????????1???
    return data.data;
}, httpErrorHandler)

httpErrorHandler.js ??????

# httpErrorHandler.js

export default (error) => {
  if (!error.response) {
    return Promise.reject({
        msg: ????????????????????????,
        error
    });
  };

  let msg = ??????;
  const status = error.response.status;

  switch (status) {
    case 400:
        msg = ???????????????????????????;
        break;
    case 401:
        msg = ???????????????????????????;
        break;
    case 403:
        msg = ???????????????;
        break;
    case 404:
        msg = ???????????????????????????;
        break;
    case 500:
    case 501:
    case 502:
    case 503:
    case 504:
        msg = ?????????????????????;
        break;
    default:
        msg = ?????????????????? + status;
  }
  return Promise.reject({
      msg,
      error
  });
}

?????? get ??????

??? jquery.ajax ?????????axios???get?????????????????? prarms ????????? data???????????????

/**
 * ????????????axios get??????
 *
 * @param {string} url ????????????
 * @param {object} option ????????????
 * @param {object} [config] ???????????????????????????
 * @returns
 */
export function get(url, option, config = {}) {
  return instance.get(url, { params: option }, config)
}

// ??????get
get(???http://baidu.com???, {
    a: 1,
    b: 2
})
.then(...)
.catch(...)

post ??????

post???????????????????????????????????????????????? prarms ??????

/**
 * ????????????axios post??????
 *
 * @param {string} url ????????????
 * @param {object} option ????????????
 * @param {object} [config] ???????????????????????????
 * @returns
 */
export function get(url, option, config = {}) {
  return instance.get(url, option, config)
}

// ??????post
post(???http://baidu.com???, {
    a: 1,
    b: 2
})
.then(...)
.catch(...)

upload ??????

?????????????????????????????????header???????????????????????????????????????????????????????????????

const uploadInstance = axios.create({
  baseURL: isDev ? ???/fakeapi??? : ???/api???,
  timeout: 15000,
  headers: {
    // ?????????????????????????????????
    ???Content-Type???: ???multipart/form-data???
  }
});

/**
 * ????????????axios upload??????
 *
 * @param {string} url ????????????
 * @param {formdata} formdata ????????????, ?????????formdata??????
 * @param {object} [config] ???????????????????????????
 * @returns
 */
export function upload(url, formdata, config = {}) {
  return uploadInstance.post(url, formdata, config)
}

# ????????????
let formData = new FormData();
formData.append("image", file);
formData.append("name", ???name???);
upload(???http://baidu.com???, formData, {
    onUploadProgress(progressEvent) {
        // ?????????????????????
    }
})

以上是关于axios???????????????????????????的主要内容,如果未能解决你的问题,请参考以下文章

axios封装

axios -- axios 是什么 & axios 特点 & json-server的介绍与服务搭建 & axios 引入

axios -- axios的基本使用 & axios其他方式发送请求 & axios请求响应结构分析

axios如何一次性发送多个网络请求?

axios的基本使用

什么是Axios ?