详解axios在vue中的用法 以及token或者session验证,响应、拦截的配置

 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

1、使用npm

npm install axios --save

2、引用axios

import axios from "axios";

使用 cdn:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

具体配置代码如下,我们服务端是用token验证 备注有说明

这里说一下token,一般是在登录完成之后,将用户的token通过localStorage或者cookie存在本地,然后用户每次在进入页面的时候(即在main.js中),会首先从本地存储中读取token,如果token存在说明用户已经登陆过,则更新vuex中的token状态。然后,在每次请求接口的时候,都会在请求的header中携带token,后台人员就可以根据你携带的token来判断你的登录是否过期.如果过期则重新登录。

import axios from 'axios'
import store from '../store'
import router from '../router'
import {
  Message,
  Loading
} from 'element-ui'
let loading;

function startLoading() { //使用Element loading-start 方法 加载动画
  loading = Loading.service({
    lock: true,
    text: 'Loding',
    background: 'rgba(0,0,0,0.6)'
  })
}

function endLoading() { //使用Element loading-close 方法 关闭动画
  loading.close()
}
//生产环境判断 线下测试域名 线上服务器域名
const BASEAPI = process.env.NODE_ENV === 'development' ? 'http://114.115.211.170:8080/web/' : 'http://114.115.211.170:8080/web/'
// 创建axios实例
const request = axios.create({
  baseURL: BASEAPI, //请求接口域名
  timeout: 60000, // 请求超时设置
  withCredentials: false, //是否让axios请求携带 cookies 如果是用session验证此处为true 默认为false可以不写
  headers: {
    'content-type': 'application/json'
  } //请求头配置
});
// 请求拦截
request.interceptors.request.use(config => {
  startLoading();
  if (store.state.token) {
    // console.log(store.state.token)
    config.headers.token = `${store.state.token}`;
  } // 让每个请求头携带存入vuex中的token 根据实际情况自行修改
  return config;
}, error => {
  return Promise.reject(error);
});
//响应拦截
request.interceptors.response.use(response => {
  //结束加载动画
  endLoading()
  //此处判断token/ession是否过期然后跳转login页面 从新获取 我们后台token过期为-30
  if (response.data.code == -30) {
    router.push('/login')  
  }
  return response;
}, error => {
  endLoading()
  console.log(error)
  return Promise.reject(error);
});

export default request

具体使用:

上面配置文件命名为http.js 

import request from './http'
//get
request('xxxx/xxxxx')
 .then(res=> {
    console.log(res);
  })
  .catch( error=> {
    console.log(error);
  });

// post
request({
 method:'post',
 url: 'xxxx/xxxxx',
 data: {
 textbook_id:id,
 token:token
 }
})
 .then(res=> {
    console.log(res);
  })
  .catch(error=> {
    console.log(error);
  });

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值