• 技术文章 >web前端 >Vue.js

    浅谈vue中axios的封装

    青灯夜游青灯夜游2020-11-02 18:00:39转载515
    下面Vue.js教程栏目带大家了解一下vue中axios的封装。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    vue中axios的封装

    第一步还是先下载axios

    cnpm install axios -S

    第二步建立一个htttp.js

    import axios from 'axios';
    import { Message } from 'element-ui';
    
    axios.defaults.timeout = 5000;
    axios.defaults.baseURL ='';
    
    
    //http request 拦截器
    axios.interceptors.request.use(
      config => {
        // const token = getCookie('名称');注意使用的时候需要引入cookie方法,推荐js-cookie
        config.data = JSON.stringify(config.data);
        config.headers = {
          'Content-Type':'application/x-www-form-urlencoded'
        }
        // if(token){
        //   config.params = {'token':token}
        // }
        return config;
      },
      error => {
        return Promise.reject(err);
      }
    );
    
    
    //http response 拦截器
    axios.interceptors.response.use(
      response => {
        if(response.data.errCode ==2){
          router.push({
            path:"/login",
            query:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
          })
        }
        return response;
      },
      error => {
        return Promise.reject(error)
      }
    )
    
    
    /**
     * 封装get方法
     * @param url
     * @param data
     * @returns {Promise}
     */
    
    export function fetch(url,params={}){
      return new Promise((resolve,reject) => {
        axios.get(url,{
          params:params
        })
        .then(response => {
          resolve(response.data);
        })
        .catch(err => {
          reject(err)
        })
      })
    }
    
    
    /**
     * 封装post请求
     * @param url
     * @param data
     * @returns {Promise}
     */
    
     export function post(url,data = {}){
       return new Promise((resolve,reject) => {
         axios.post(url,data)
              .then(response => {
                resolve(response.data);
              },err => {
                reject(err)
              })
       })
     }
    
     /**
     * 封装patch请求
     * @param url
     * @param data
     * @returns {Promise}
     */
    
    export function patch(url,data = {}){
      return new Promise((resolve,reject) => {
        axios.patch(url,data)
             .then(response => {
               resolve(response.data);
             },err => {
               reject(err)
             })
      })
    }
    
     /**
     * 封装put请求
     * @param url
     * @param data
     * @returns {Promise}
     */
    
    export function put(url,data = {}){
      return new Promise((resolve,reject) => {
        axios.put(url,data)
             .then(response => {
               resolve(response.data);
             },err => {
               reject(err)
             })
      })
    }

    第三步

    在main.js中引入

    import axios from 'axios'
    import {post,fetch,patch,put} from './utils/http'
    //定义全局变量
    Vue.prototype.$post=post;
    Vue.prototype.$fetch=fetch;
    Vue.prototype.$patch=patch;
    Vue.prototype.$put=put;

    最后在组件里直接使用

     mounted(){
        this.$fetch('/api/v2/movie/top250')
          .then((response) => {
            console.log(response)
          })
      },
    
    //其余的方法一样

    相关推荐:

    2020年前端vue面试题大汇总(附答案)

    vue教程推荐:2020最新的5个vue.js视频教程精选

    更多编程相关知识,请访问:编程教学!!

    以上就是浅谈vue中axios的封装的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:vue axios
    上一篇:vue.js中如何使用v-for以及怎么获取索引? 下一篇:vue如何动态绑定class?方法介绍
    线上培训班

    相关文章推荐

    • vscode中快速搭建vue模板的方法介绍• 浅谈Vue.use到底是什么?• vue组件间如何进行通信?方法介绍• 浅谈Vue.js中双向绑定的原理及实现方法• 浅谈vue-cli初始化Vue项目的项目结构

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网