vue專案中封裝axios

2021-09-20 06:47:45 字數 2153 閱讀 7375

首先,配置axios***,在專案src目錄下建立request.js:
import axios from 'axios'

import store from '@/store'

import from 'ant-design-vue';

import from 'ant-design-vue';

import vue from 'vue';

import from 'element-ui';

let loadinginstance = loading.service(); //為所有請求新增loading

// 建立axios例項

const service = axios.create(,

timeout: 15000 // 請求超時時間

});// 請求發出前的***

service.interceptors.request.use((req) =>

return req

}, (error) => );

// 響應的***

service.interceptors.response.use(

function(response) ,

function(error)

} else ;

// 請求錯誤則向store commit這個狀態變化

});export default service

以上**中,我們只對response進行了攔截,使用promise,若請求成功則resolve,若失敗則向vuex提交一次狀態變更,promise | vuex。並將返回的error作為payload進行傳遞。

定義乙個簡單的store.js

import vue from 'vue' 

export default

},mutations:

}}

可以看到,on_http_error將payload提交來的資料儲存在state的httperror,在元件中進行狀態變更。

實際工程中,我們每個頁面都會有很多的請求,這些請求都應該寫成api,儲存在api資料夾裡,方便呼叫,而不是直接寫在頁面中,我們通過乙個例子簡單進行介紹,封裝get方法:

工程目錄src/api/下建立testapi.js檔案:

import request from '@/request'

export function get (url, params = {}) )

.then(response => )

.catch(err => )

})}

對頁面中的請求進行統一管理

import  from './api/testapi'

const table =

}const userpath =

export default userpath

在元件中測試

import axios from './common/index'

vue.prototype.$axios = axios

export default ,

data () ,

loading: false,

columns}},

methods:

pager.current = pagination.current

this.fetch()

},fetch (params = {}) ).then(data =>

// read total count from server

// pagination.total = data.totalcount;

pagination.total = 200

this.loading = false

this.data = data.results

this.pagination = pagination})}

}}

vue專案中封裝axios

axios.defaults.timeout 100000 請求超時時間。請求位址 其實做到這裡也可以,不用去單獨封裝get post 等請求也可以直接呼叫的。然後就可以在vue頁面去呼叫了 mounted function then function response catch function...

vue專案中封裝axios請求

1.前言 之前是我負責這個專案的搭建,及打包上線,整個專案都是我乙個人來做,所以介面寫的遍地都是,造成了瀏覽起來很難受,不便於維護 所以就打算封裝一下axios 建立乙個apis 的js檔案來集中管理介面,走著!首先考慮的是通過promise來封裝axios,使 看起來更清晰明了 2.1 專案中引入...

專案中封裝的axios

把每個一級選單按照模組去區分在urls檔案中進行統一管理 把get 和post請求進行攔截,以此進行方便頁面傳參,get和post傳參方式一樣方便使用。main.ts中 import post from apis index vue.prototype.post post 掛載到全域性將 postr...