request.ts封装 请求拦截器
import { getToken, hasToken } from '@/utils/storage'
// 封装axios
import axios from 'axios'
const instance = axios.create({
baseURL: 'http://geek.net/v1_0/',
timeout: 5000
})
//添加请求拦截器
instance.interceptors.request.use(
function (config) {
// 在发送请求之前有token带上koken
if (hasToken()) {
const token = getToken().token
config.headers!.Authorization = `Bearer ${token}`
}
return config
},
function (error) {
// 对请求错误做些什么
return Promise.reject(error)
}
)
// 添加响应拦截器
instance.interceptors.response.use(
function (response) {
// 对响应数据做点什么
return response
},
function (error) {
// 对响应错误做点什么
return Promise.reject(error)
}
)
export default instance
token封装storage.ts
import { Token } from '@/types/data'
const TOKEN_KEY = 'geek-app-66'
// 获取 token
export function getToken (): Token {
return JSON.parse(localStorage.getItem(TOKEN_KEY) || '{}')
}
// 设置 token
export function setToken (data: Token): void {
localStorage.setItem(TOKEN_KEY, JSON.stringify(data))
}
// 移除 token
export function removeToken (): void {
localStorage.removeItem(TOKEN_KEY)
}
// 判断是否登录(授权)
export function hasToken (): boolean {
return !!getToken().token
}