复习axios 拦截器

706 阅读1分钟

先上代码

axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
axios.interceptors.request.use(config => {
  // console.log(config)
  config.headers.Authorization = window.sessionStorage.getItem('token')
  return config
})

项目环境有开发环境、测试环境和生产环境。通过node的环境变量来匹配我们的默认的接口url前缀。axios.defaults.baseURL可以设置axios的默认请求地址。

if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = '开发url';}
else if (process.env.NODE_ENV == 'debug') {
    axios.defaults.baseURL = '测试url';
}
else if (process.env.NODE_ENV == 'production') {
    axios.defaults.baseURL = '生产url';
}

post请求头的设置

axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'

请求拦截

axios.interceptors.request.use(config => {
  // console.log(config)
  config.headers.Authorization = window.sessionStorage.getItem('token')
  return config
})

登录完成之后,将用户的token通过localStorage或者cookie存在本地,然后用户每次在进入页面的时候(即在main.js中),会首先从本地存储中读取token,如果token存在说明用户已经登陆过.

axios的封装

//login.js  
import request from '@/utils/axios'

// 登录方法
export function login(username, password, code, uuid) {
  const data = {
    username,
    password,
    code,
    uuid
  }
  return request({
    url: '/login',
    method: 'post',
    data: data
  })
}

// 获取用户详细信息
export function getInfo() {
  return request({
    url: '/getInfo',
    method: 'get'
  })
}

// 退出方法
export function logout() {
  return request({
    url: '/logout',
    method: 'post'
  })
}

// 获取验证码
export function getCodeImg() {
  return request({
    url: '/captchaImage',
    method: 'get'
  })
}

然后在logon.vue组件引用logon.js 直接用调用它的函数方方法

<template>
    <div></div>
</template>
<script>
import { get } from "@/api/login";
export default {
  name: "Login",
  data() {
    return {
      codeUrl: "",
      loginForm: {
        username: "admin",
        password: "admin123",
        rememberMe: false,
        code: "",
        uuid: ""
      },
    };
  },
  created() {
    this.getCode();
  },
  methods: {
    getCode() {
      get().then(res => {
        this.codeUrl = "data:image/gif;base64," + res.img;
        this.loginForm.uuid = res.uuid;
      });
    },
  }
};
</script>