vue中如何簡單封裝axios淺析
把axios註入到Vue中
import axios from 'axios'; Vue.prototype.$axios = axios;
import axios from 'axios' axios.defaults.timeout = 5000; //響應時間 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; //配置請求頭 axios.defaults.withCredentials= true; //帶cookie axios.defaults.baseURL = 'http://localhost:8080/'; //配置接口地址 //POST傳參序列化(添加請求攔截器) axios.interceptors.request.use((config) => { //在這裡可以添加序列化代碼,根據後端而定,我用的SSM後端接受Json對象,假如需要序列化可以用qs組件 return config; },(error) =>{ console.log('錯誤的傳參') return Promise.reject(error); }); //返回狀態判斷(添加響應攔截器) axios.interceptors.response.use((res) =>{ //對響應數據做些事 if(!res.data.success){ return Promise.resolve(res); } return res; }, (error) => { console.log('網絡異常') return Promise.reject(error); }); //返回一個Promise(發送post請求) export function fetchPost(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(response => { resolve(response); }, err => { reject(err); }) .catch((error) => { reject(error) }) }) } 返回一個Promise(發送get請求) export function fetchGet(url, param) { return new Promise((resolve, reject) => { axios.get(url, {params: param}) .then(response => { resolve(response) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } export default { fetchPost, fetchGet, }
簡單測試:
loginPost: function() { let params = { 'password': '123', 'username': 'admin' } http.fetchPost('/login', params).then((data) => { console.log(data) }).catch(err => { console.log(err) }) }, hello: function() { http.fetchGet('/hello', "").then((data) => { console.log(data) }).catch(err => { console.log(err) }) },
post請求:
get請求:
跨域問題,這裡是在後端配置的:
在SpringMVC.xml中配置跨域:
<!-- 接口跨域配置 --> <mvc:cors> <!-- allowed-methods="*" --> <!-- 表示所有請求都有效 --> <mvc:mapping path="/**" allowed-origins="*" allowed-methods="POST, GET, OPTIONS, DELETE, PUT" allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" allow-credentials="true"/> </mvc:cors><!-- 接口跨域配置 -->
接口配置:
在Vue中配置 創建一個vue.config.js:
module.exports = { devServer: { proxy: { '/api': { target: 'http://127.0.0.1:8080', // 在本地會創建一個虛擬服務端,然後發送請求的數據,並同時接收請求的數據,這樣服務端和服務端進行數據的交互就不會有跨域問題 changeOrigin: true, ws: true, pathRewrite: { '^/api': '' // 替換target中的請求地址,也就是說以後你在請求http://api.jisuapi.com/XXXXX這個地址的時候直接寫成/api即可 } } } } }
後端也能正常獲取cookie。
當然要註意下面這個配置,這個是帶cookie的原因
axios.defaults.withCredentials= true;
總結
到此這篇關於vue中如何簡單封裝axios的文章就介紹到這瞭,更多相關vue封裝axios內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Vue項目中封裝axios的方法
- vue項目中如何使用mock你知道嗎
- react中axios結合後端實現GET和POST請求方式
- vue中Promise的使用方法詳情
- axios的interceptors多次執行問題解決