Vue中axios的封裝

2021-10-09 14:18:11 字數 2098 閱讀 9592

npm install axios; //命令列安裝axios

首先,新建乙個js檔案用於引入axios。比如說,新建乙個http.js檔案,在檔案中引入步驟如下所示:

import qs from 'qs';//引入qs模組,為post型資料提供序列化(非常重要)

import from 'vant';

# 設定請求超時

axios.defaults.timeout = 10000: //設定超時時間為10s```

# 設定post請求方式請求頭

首先,匯入vuex。因為下面需要使用到裡面的狀態物件,用於實現登入認證功能。

**如下:

config => ,    

error => )

注:在每次傳送請求之前判斷store中是否存在token,如果存在的話就將其新增到http請求的請求頭當中去,用於後台通過token判斷使用者登入情況。同時,還存在一種情況是,token可能是過期的。所以在響應***中要對返回狀態進行判斷。(響應攔截下面會講到)

axios.interceptors.response.use(    

response => else

},

error =>

});break;

case 403: //token過期

toast();

localstorage.removeitem('token');

store.commit('loginsuccess', null);

settimeout(() =>

});

}, 1000);

break;

case 404: //請求錯誤

toast();

break;

default: // 其它錯誤,直接丟擲錯誤提示

toast();

}return promise.reject(error.response);

}}

});

//axios對應的請求方式有很多,這裡主要講解get與post。

首先是get方法的封裝,封裝方式如下:

export function get(url, params)).then(res => ).catch(err =>)    

});

通過上面的**,我們可以看到,get函式有兩個引數。第乙個引數代表的是我們要請求的url位址,第二個引數代表的是請求該url時攜帶的請求引數。接下來是get請求返回的promise物件,成功時返回resolve,失敗時返回reject。

export function post(url, params) )

.catch(err =>)

});}

post方法的封裝與上面的get類似,不同之處在於,post在提交引數的書寫方式。post所攜帶的第二個引數是乙個引數物件(在這裡用到了qs模組!!!),而get的第二個引數是乙個。

那麼,當我們封裝好axios以後要如何去使用呢?接下來我們就一起去了解一下api介面的實現》

實現建立乙個js介面檔案,統一管理介面。

然後在該檔案中引入get()和post()

export const login = p => post('', p)在這裡我們定義了乙個login方法,這個方法有乙個引數p,它是請求該介面時攜帶的引數物件。另乙個url就是我們請求介面的位址。

這樣,我們就寫好了乙個api介面了,接下來就是在頁面方法中引用。

import from '@/request/api';

export default ).then(res = > )

} }}

以上就是最基本的axios封裝啦~~~~~

vue中axios的封裝

cnpm install axios s 第二步建立乙個htttp.js response 從哪個頁面跳轉 return response error 封裝get方法 param url param data returns export function fetch url,params then...

vue中axios的封裝

先安裝 axios npm install axiosaxios的詳細介紹以及用法 就不多說了請 移步 github 下面是簡單的封裝乙個 http.js,在此說明 checkstatus 這個方法呢 是不一定需要的 根據個人的專案需求吧,也可以直接返回response,交給後面另行處理也行。或者根...

vue中axios的封裝使用

npm install axios s 或者 npm i axios simport axios from axios vue.prototype.axios axios 將axios繫結到vue的原型上module.exports before import axios from axios im...