vue封装axios请求

对axios进行封装以及将API接口按业务模块统一管理,有助于我们简化代码,方便后期维护
其实vue封装axios是很简单的

首先 在src路径下建http文件夹 并且创建api.js env.js request.js 这三个文件

env.js文件

这个文件主要就是封装我们的公共地址

      export default {
       // 开发环境
       dev: {
         baseUrl: "开发环境公共地址"
       },
       //   测试环境test
       test: {
         baseUrl: "测试环境公共地址"
       },
       //线上接口
       prod: {
         baseUrl: "线上环境公共地址"
       }
     };
request.js 文件

这里主要就是创建axios 以及封装请求拦截和相应拦截

      import axios from "axios";
      import env from "./env";
      //这里是私有域名  但是也可以不写
      var vipUrl = "/app";
      // 创建axios实例

      const service = axios.create({
      //这里拿线上接口测试
        baseUrl: env.prod.baseUrl + vipUrl,
         headers:{},//请求头
         settimeout:2000,//超时时间
      });
      // 添加请求拦截器
      service.interceptors.request.use(
        config => {
          // 在发送请求之前做些什么
          config.headers["deviceType"] = "H5";
          console.log("请求的数据:", config);
          return config;
        },
        error => {
          // 对请求错误做些什么
          return Promise.reject("出错", error);
        }
      );

      // 添加响应拦截器
      service.interceptors.response.use(
        response => {
          // 对响应数据做点什么
          // console.log("返回的数据", response);
          return response;
        },
        error => {
          // 对响应错误做点什么
          return Promise.reject(error);
        }
      );
      export default service;
api.js

这个文件中主要是需要的接口地址

      //引入request.js文件
      import request from "./request";

      // 轮播
      export function getBanners(data) {
        return request({
          url: "/banner",//这个地址是去掉公共地址和私有域名之后剩下的地址
          method: "GET",//请求方式 支持多种方式  get post put delete 等等
          data//发送请求要配置的参数 无参数的情况下也可以不写
        });
      }
最后是在页面中的引用

那个页面需要请求数据 就引入相应的方法 比如我的首页需要引入banner

      <script>
      //引入需要的接口
      import { getBanners } from "../http/api";
      export default {
        name: "Home",
        components: {},
        mounted() {
            //直接使用 .then 是请求成功的回调 .catch是请求失败的回调
          getBanners()
            .then(result => {
              window.console.log("111", result);
            })
            .catch(err => {
              window.console.log("222", err);
            });
        },
        methods: {}
      };
      </script>

这样 一个比较简单的axios封装就完成啦 思想并不是很复杂的
每天一个小知识点,加油!

原文地址:https://www.cnblogs.com/mxnl/p/13531843.html