zoukankan      html  css  js  c++  java
  • vue中封装axios方法

     axios基本配置 使用方法

    import axios from 'axios'
    
    // 创建axios实例
    const service = axios.create({
      baseURL: process.env.BASE_API, // node环境的不同,对应不同的baseURL
      timeout: 5000, // 请求的超时时间
      //设置默认请求头,使post请求发送的是formdata格式数据// axios的header默认的Content-Type好像是'application/json;charset=UTF-8',我的项目都是用json格式传输,如果需要更改的话,可以用这种方式修改
      // headers: {  
        // "Content-Type": "application/x-www-form-urlencoded"
      // },
      withCredentials: true // 允许携带cookie
    })

     封装get和post方法

    import axios from 'axios';
    const serverconfig = require('../../static/serverconfig.json') // 这个json文件中配置接口根目录地址
    
    class Axios{
        getUrl(url){
          return `${serverconfig.ApiUrl}${url}`; // 获取完整的接口地址
        };
    
     // post 请求
      postServer(opt) {
        const _axios = axios.create({
          timeout: 10000
        });
        let data = {};
        if (opt.data) {
          data = opt.data;
        }
        _axios.post(opt.url, data).then((response) => {
          console.log(response);
          if(response.data.status === 'error'){
           // 这里用layer弹层插件
            layer.open({
              content: 'error:' + response.data.hotelInfo
              ,skin: 'msg'
              ,time: 2 //2秒后自动关闭
            });
            if (opt.onFailed) {
              opt.onFailed(response);
            }
            return;
          }
          if (opt.onSuccess) {
            opt.onSuccess(response);
          }
        }).catch(error => {
          if (opt.onFailed) {
            opt.onFailed(error);
          }
          if (!error.response.data.success) {
            alert(error.response.data.error.message);
            // return;
          }
    
        });
      }
    
      // get 请求
      getServer(opt) {
        const _axios = axios.create({
          timeout:10000
        });
        let data = {};
        if (opt.data) {
          data = opt.data;
        }
        _axios.get(opt.url, {params: data}).then((response) => {
          if (opt.onSuccess) {
            opt.onSuccess(response);
          }
        }).catch(error => {
          if (opt.onFailed) {
            opt.onFailed(error);
          }
        });
      }
    
    
      setData(opt) {
        let data = {};
        if (opt.data) {
          data = opt.data;
        }
        return data;
      }
    
    }
    
    export default Axios;

    封装接口

    hotel.service.js
    import Axios from  './axios.service'
    const AxiosMethods = new Axios();
        sendQueryServer(opt){
        const data = AxiosMethods .setData(opt);
        const url = AxiosMethods .getUrl('/Home/Query');
        AxiosMethods .postServer({url, data, onSuccess: opt.onSuccess, 
        onFailed: opt.onFailed});
      }
    }

    页面调用query.vue

     import HotelServer from "@/service/hotel.service"
    
    const hotelServer = new HotelServer();
    
    methods:{
      _sendQueryServer() {
            const loadingIndex = this.loadingShow()
            hotelServer.sendQueryServer({
              onSuccess: (res) => {
                layer.close(loadingIndex)
                console.log(res)
              },
              onFailed: (res) => {
                layer.close(loadingIndex)
              }
            })
    }
  • 相关阅读:
    关于用户、用户组及文件权限的试题
    lvm-简介
    项目中用到的jar包简介(1)
    Centos7开启SSH服务
    2.docker架构,原理,安装及简单应用
    如何平滑将注册中心从Eureka迁移到Nacos?
    8.k8s连载--重新生成k8s token(kubeadm join报错及解决)
    7. 复制k8s Node节点 并重新初始化k8s-nodes2节点 (k8s连载)
    6. k8s + jenkins 实现持续集成(完)
    5.k8s基本命令汇总
  • 原文地址:https://www.cnblogs.com/leiting/p/9100132.html
Copyright © 2011-2022 走看看