axios 配置

作者: zhudying | 来源:发表于2020-07-02 15:30 被阅读0次

为了方便对 axios 操作,我们通常对 axios 进行二次封装。

1. 配置 axios 基本信息
  1. 建立 src/ api / index.js 文件并配置axios
import axios from "axios";
import { Message } from "element-ui";
import router from "@/router";
// 创建axios实例
const service = axios.create({
  // api 的 base_url
  baseURL: xxx,
  timeout: 15000 // 请求超时时间
});

// request 请求拦截器
service.interceptors.request.use(
  config => {

    //设置header
    config.headers["Content-Type"] = "application/x-www-form-urlencoded";
    config.headers["Content-Type"] = "application/json;  charset=UTF-8";

    // 让每个请求携带自定义token 请根据实际情况自行修改
    if (sessionStorage.getItem("token")) {
      // header添加token
      config.headers["Authorization"] = sessionStorage.getItem("token");
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);
// respone 响应拦截器
service.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    // 错误信息提示,具体配置自己修改
    if (error.response.status == 400) {
      Message({
        message: "参数信息有误",
        center: true
      });
      return;
    } else if (error.response.status == 401) {
      Message({
        message: "请重新登陆",
        center: true
      });
      router.push("/login");
      return;
    } else if (error.response.status == 404) {
      Message({
        message: "用户不存在",
        center: true
      });
      return;
    } else if (error.response.status == 500) {
      Message({
        message: "服务器内部错误",
        center: true
      });
      return;
    } else if (error.response.status == 560) {
      Message({
        message: "数据库异常",
        center: true
      });
      return;
    }
    console.log("err" + error); // for debug
    Message({
      message: error.message,
      type: "error",
      duration: 5 * 1000
    });
    return Promise.reject(error);
  }
);

export default service;
2. 封装 axios 函数

例如: src/ api / user / user.js 文件,单独建立文件夹,方便统一管理,同时在开发时,避免git提交时的冲突

import axios from '../index'

// 请求函数
export function getUser (req) {
  return axios({
    method: "post",
    url: "/user/getInfo",
    data: req
  })
}
3. 使用函数
import { getUser } from '@/api/user/user.js'

methods:{
    getUser(data).then(res=>{})
}
4. 并发请求

例如:根据函数1和函数2返回数据的 id 和 phone,作为函数3的入参,去查询用户数据

import { getUser, getPhone, getUserId } from '@/api/user/user.js'

mounted() {
    axios.all([getUserId (), getPhone ()])
      .then(axios.spread(function(userId, phone) {
         console.log('请求1结果', userId)
         console.log('请求2结果', phone)
         let params = {
            phone: phone,
            id: userId
         }
         getUser(params ).then(res=>{})
      }))
  },

相关文章

网友评论

    本文标题:axios 配置

    本文链接:https://www.haomeiwen.com/subject/cxjlqktx.html