项目中的接口除了登录之外大多数都需要提供 token 才有访问权限
方式一:在每次请求的时候手动添加(麻烦)。
axios({
method: "",
url: "",
headers: {
Authorization: "Bearer token"
}
})
方式二:使用请求拦截器统一添加(更方便)。
在axios中设置统一的token
/**
* 请求模块
*/
import axios from 'axios'
// 在非组件模块中获取 store 必须通过这种方式
// 这里单独加载 store,和在组件中 this.$store 一个东西
import store from '@/store/'
const request = axios.create({
baseURL: 'http://ttapi.research.itcast.cn/' // 基础路径
})
// 请求拦截器
// Add a request interceptor
request.interceptors.request.use(function (config) {
// Do something before request is sent
const { user } = store.state
// 如果用户已登录,统一给接口设置 token 信息
if (user) {
config.headers.Authorization = `Bearer ${user.token}`
}
// 处理完之后一定要把 config 返回,否则请求就会停在这里
return config
}, function (error) {
// Do something with request error
return Promise.reject(error)
})
// 响应拦截器
// 导出
export default request