axios傳遞參數傳不過去,axios設置請求頭header,vue項目中的axios封裝get/post兩種請求模式
自(zi)用的(de)一個簡單的(de)axios封裝源碼分享(xiang)給大家。有改進的(de)地方(fang)希望(wang)大家留言評論!謝謝!
import axios from "axios";import qs from "qs";import router from "@/router/index";import {ElMessage} from 'element-plus'//正式axios.defaults.baseURL = import.meta.env.VITE_BASEURL//post請求頭axios.defaults.headers.post["Content-Type"] ="application/x-www-form-urlencoded;charset=UTF-8";//設置超時axios.defaults.timeout = 300000; axios.interceptors.request.use( config => { localStorage.getItem('token') && (config.headers.token = localStorage.getItem('token')); return config; }, error => { return Promise.reject(error); } ); axios.interceptors.response.use( response => { //token 失效 if(response.data.code == 1000){ ElMessage.error('登錄超時,請重新登錄!'); let urlArr = location.href.split('/'); localStorage.clear(); router.replace({ path: '/Login', query: { redirect: '/' + urlArr[urlArr.length-1] } }) return Promise.resolve(response); } if (response.status == 200) { return Promise.resolve(response); } else { return Promise.reject(response); } }, error => { console.log(`異常請求:${JSON.stringify(error.message)}`); } );export default { post(url, data) { return new Promise((resolve, reject) => { axios({ method: 'post', url, data: qs.stringify(data), }) .then(res => { resolve(res.data) }) .catch(err => { reject(err) }); }) }, get(url, data) { return new Promise((resolve, reject) => { axios({ method: 'get', url, params: data, }) .then(res => { resolve(res.data) }) .catch(err => { reject(err) }) }) } };