ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vue axios二次封装 含Token

2021-11-21 13:02:00  阅读:221  来源: 互联网

标签:axios method headers Token Vue common data options


1.可以创建 src > common > request.js

//引入mint-ui模块 使用“加载中”
import { Indicator } from "mint-ui";
//引入axios
import axios from "axios";
import store from '@/store/index.js';
import router from '@/router/index.js'

export default {
    common: {
        method: "GET",
        data: {},
        params: {},
        headers: {},
    },
    $axios(options = {}) {
        //如果有传method,就用传过来的method,否则用默认的method
        options.method = options.method || this.common.method;
        options.data = options.data || this.common.data;
        options.params = options.params || this.common.params;
        options.headers = options.headers || this.common.headers;
        //请求前_显示加载中
        Indicator.open("加载中...");
        //是否为登录状态
        if (options.headers.token) {//如果前端请求时候要求验证token   
            options.headers.token = store.state.user.token; //详情见vuex持久化存储博客
            if (!options.headers.token) {//如果没有登录 跳转到登录页面
                router.push('/login')
            }
        }
  
        return axios(options).then((v) => {
            let data = v.data.data
            return new Promise((res, rej) => {
                if (!v) return rej();
                //如果有数据 关闭加载中 =》
                setTimeout(() => {
                    Indicator.close();
                }, 500)
                res(data)
            })
        });
    },
};

2.在含有购物车的组件中使用axios二次封装


<footer>
      <div @click="addCart()" class="add-cart">加入购物车</div>
      <div>立即购买</div>
</footer>
import http from "@/common/api/request.js"; 

methods: {
    //请求商品数据 get请求 
    async getData() {
      let id = this.$route.query.id;
      let res = await http.$axios({
        url: "/api/goods/id",
        params: {
          id,
        },
      });
      this.goods = res; //对象
      console.log(res);
    }, 
    //加入购物车 post请求
    addCart() {
      http
        .$axios({
          url: "/api/addCart",
          method: "post",
          data: {
            goodsId: this.$route.query.id,
          },
          headers: {
            token: true,
          },
        })
        .then((res) => {
          console.log(res);
        });
    },
  },

标签:axios,method,headers,Token,Vue,common,data,options
来源: https://blog.csdn.net/weixin_60463255/article/details/121383367

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有