request.js
import axios from 'axios' import {Toast} from 'vant' // 环境的切换 // if (process.env.NODE_ENV === 'development') { // axios.defaults.baseURL = 'http://192.168.8.144:8082' // 开发环境 // } else if (process.env.NODE_ENV === 'debug') { // axios.defaults.baseURL = '' // 调试环境 // } else if (process.env.NODE_ENV === 'production') { // axios.defaults.baseURL = '' // 生产环境 // } axios.defaults.baseURL = 'http://192.168.8.144:8082' // 开发环境 axios.defaults.timeout = 10000 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8;multipart/form-data' // 请求拦截器 axios.interceptors.request.use( config => { console.log('-===============') // config.headers = { // 'Content-Type': 'application/x-www-form-urlencoded' //转换数据格式 // } if (localStorage.getItem('Authorization')) { config.headers.Authorization = localStorage.getItem('Authorization');//请求携带token } return config; }, error => { return Promise.error(error) }) // 响应拦截器 axios.interceptors.response.use( response => { if (response.status === 200) { return Promise.resolve(response) } else { return Promise.reject(response) } }, // 服务器状态码不是200的情况 error => { if (error.response.status) { switch (error.response.status) { // 401: 未登录 // 未登录则跳转登录页面,并携带当前页面的路径 // 在登录成功后返回当前页面,这一步需要在登录页操作。 case 401: this.$router.replace({ path: '/Login', }) break; // 403 token过期 // 登录过期对用户进行提示 // 清除本地token和清空vuex中token对象 // 跳转登录页面 case 403: Toast({ message: '登录过期,请重新登录', duration: 1000, forbidClick: true }) // 清除token localStorage.removeItem('Authorization') // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 setTimeout(() => { this.$router.replace({ path: '/Login', }) }, 1000) break; // 404请求不存在 case 404: Toast({ message: '网络请求不存在', duration: 1500, forbidClick: true }) break; // 其他错误,直接抛出错误提示 default: Toast({ message: error.response.data.message, duration: 1500, forbidClick: true }) } return Promise.reject(error.response) } } ) /** *get 方法,对应get请求 *@param {String} url [请求的url地址] *@param {Object} params[请求携带的参数]] */ export function get(url, params) { return new Promise((resolve, reject) => { axios.get(url, { params: params }).then(res => { resolve(res.data); }).catch(err => { reject(err.data); }) }); } /** *post 方法,对应post请求 *@param {String} url [请求的url地址] *@param {Object} params[请求携带的参数]] */ export function post(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(res => { resolve(res.data); }).catch(err => { reject(err.data); }) }); } /** *封装patch请求 *@param url * @param params * @returns {Promise} */ export function patch(url, params) { return new Promise((resolve, reject) => { axios.patch(url, params) .then(res => { resolve(res.data); }, err => { reject(err); }) }) } /** *put 请求 *@param url * @param params */ export function put(url, params) { return new Promise((resolve, reject) => { axios.put(url, params) .then(res => { resolve(res.data); }, err => { reject(err); }) }) }
api.js
import {post} from './request' export const postPublic = params =>post('/getPublicKey',params) export const postRegist = params =>post('/regist',params) export const postLogin = params =>post('/login',params)
login.vue
import {postPublic, postRegist, postLogin} from '../utils/api' function getPublic() { console.log('------') let params = {} let publicKey = '' postPublic(params).then((res) => { console.log(res, '52+++++++++') if (res.code == '200') { publicKey = res.data.publicKey state.uuid = res.data.uuid setKey(publicKey) } }) }