課程
/前端開發(fā)
/Vue.js
/axios在vue中的使用
誰有 Http.js? 的源碼? 可以發(fā)一下嗎
2020-04-03
源自:axios在vue中的使用 4-11
正在回答
import?axios?from?'axios'
import?service?from?'./contactApi'
import?{?Toast?}?from?'vant'
//?1.service?循環(huán)遍歷出不同的請求方法
let?instance?=?axios.create({
??//?注意地址的拼寫
??baseURL:?'http://localhost:9000/api',
??timeout:?1000
})
let?Http?=?{};?//包裹請求方法的容器
//?2.請求格式或者參數(shù)的統(tǒng)一
for?(let?key?in?service)?{
??let?api?=?service[key];?//?url?method
??console.log(api)
??console.log(key)
??//?async的作用:避免進入回調(diào)地獄
??Http[key]?=?async?function?(
????params,???//?請求參數(shù)?get(url),put,post,,patch(data),delete(url)
????isFormdata?=?false,?//?判斷是否是form-data請求
????config?=?{}?//配置參數(shù)
??)?{
????//?let?url?=?api.url
????let?newParams?=?{}
????//?3.content-type是否是form-data的判斷
????if?(params?&&?isFormdata)?{
??????newParams?=?new?FormData();
??????for?(let?i?in?params)?{
????????//?轉(zhuǎn)換form-data的格式
????????newParams.append(i,?params[i]);
??????}
????}?else?{
??????newParams?=?params;
????}
????//?4.不同的請求判斷
????let?response?=?{};?//請求的返回值
????if?(api.method?===?'put'?||?api.method?===?'post'?||?api.method?===?'patch')?{
??????try?{
????????response?=?await?instance[api.method](api.url,?newParams,?config);
??????}?catch?(err)?{
????????response?=?err;
????}?else?if?(api.method?===?'delete'?||?api.method?===?'get')?{
????????config.params?=?newParams;
????????response?=?await?instance[api.method](api.url,?config);
????return?response;???//?返回響應(yīng)值
??}
}
//?攔截器的添加
//?5.請求攔截器
instance.interceptors.request.use(
??//?發(fā)起請求前
??config?=>?{
????Toast.loading({
??????mask:?true,?//是否顯示陰影
??????duration:?0,?//?0是一直存在陰影,默認的是1000ms
??????forbidClick:?true,?//禁止點擊
??????message:?'加載中...'
????})
????return?config
??},
??//?請求失敗
??()?=>?{
????Toast.clear()
????Toast('請求錯誤,請稍后重試')
??}??
)
//?6.響應(yīng)攔截器
instance.interceptors.response.use(
??//?請求成功
??res?=>?{
????return?res.data
export?default?Http
import?axios?from?'axios'import?service?from?'./contactApi'import?{?Toast?}?from?'vant'//?1.service?循環(huán)遍歷出不同的請求方法let?instance?=?axios.create({??//?注意地址的拼寫??baseURL:?'http://localhost:9000/api',??timeout:?1000})let?Http?=?{};?//包裹請求方法的容器//?2.請求格式或者參數(shù)的統(tǒng)一for?(let?key?in?service)?{??let?api?=?service[key];?//?url?method??console.log(api)??console.log(key)??//?async的作用:避免進入回調(diào)地獄??Http[key]?=?async?function?(????params,???//?請求參數(shù)?get(url),put,post,,patch(data),delete(url)????isFormdata?=?false,?//?判斷是否是form-data請求????config?=?{}?//配置參數(shù)??)?{????//?let?url?=?api.url????let?newParams?=?{}????//?3.content-type是否是form-data的判斷????if?(params?&&?isFormdata)?{??????newParams?=?new?FormData();??????for?(let?i?in?params)?{????????//?轉(zhuǎn)換form-data的格式????????newParams.append(i,?params[i]);??????}????}?else?{??????newParams?=?params;????}????//?4.不同的請求判斷????let?response?=?{};?//請求的返回值????if?(api.method?===?'put'?||?api.method?===?'post'?||?api.method?===?'patch')?{??????try?{????????response?=?await?instance[api.method](api.url,?newParams,?config);??????}?catch?(err)?{????????response?=?err;??????}????}?else?if?(api.method?===?'delete'?||?api.method?===?'get')?{??????try?{????????config.params?=?newParams;????????response?=?await?instance[api.method](api.url,?config);??????}?catch?(err)?{????????response?=?err;??????}????}????return?response;???//?返回響應(yīng)值??}}//?攔截器的添加//?5.請求攔截器instance.interceptors.request.use(??//?發(fā)起請求前??config?=>?{????Toast.loading({??????mask:?true,?//是否顯示陰影??????duration:?0,?//?0是一直存在陰影,默認的是1000ms??????forbidClick:?true,?//禁止點擊??????message:?'加載中...'????})????return?config??},??//?請求失敗??()?=>?{????Toast.clear()????Toast('請求錯誤,請稍后重試')??}??)//?6.響應(yīng)攔截器instance.interceptors.response.use(??//?請求成功??res?=>?{????Toast.clear()????return?res.data??},??()?=>?{????Toast.clear()????Toast('請求錯誤,請稍后重試')??})export?default?Http
舉報
本課程介紹了如何在vue項目中優(yōu)雅的使用Axios。
2 回答有源碼嗎?
1 回答老師有源碼嗎
1 回答請問老師有源碼嗎?
1 回答大項目,該如何封裝 http.js
1 回答哪里下載源碼
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2020-04-08
import?axios?from?'axios'
import?service?from?'./contactApi'
import?{?Toast?}?from?'vant'
//?1.service?循環(huán)遍歷出不同的請求方法
let?instance?=?axios.create({
??//?注意地址的拼寫
??baseURL:?'http://localhost:9000/api',
??timeout:?1000
})
let?Http?=?{};?//包裹請求方法的容器
//?2.請求格式或者參數(shù)的統(tǒng)一
for?(let?key?in?service)?{
??let?api?=?service[key];?//?url?method
??console.log(api)
??console.log(key)
??//?async的作用:避免進入回調(diào)地獄
??Http[key]?=?async?function?(
????params,???//?請求參數(shù)?get(url),put,post,,patch(data),delete(url)
????isFormdata?=?false,?//?判斷是否是form-data請求
????config?=?{}?//配置參數(shù)
??)?{
????//?let?url?=?api.url
????let?newParams?=?{}
????//?3.content-type是否是form-data的判斷
????if?(params?&&?isFormdata)?{
??????newParams?=?new?FormData();
??????for?(let?i?in?params)?{
????????//?轉(zhuǎn)換form-data的格式
????????newParams.append(i,?params[i]);
??????}
????}?else?{
??????newParams?=?params;
????}
????//?4.不同的請求判斷
????let?response?=?{};?//請求的返回值
????if?(api.method?===?'put'?||?api.method?===?'post'?||?api.method?===?'patch')?{
??????try?{
????????response?=?await?instance[api.method](api.url,?newParams,?config);
??????}?catch?(err)?{
????????response?=?err;
??????}
????}?else?if?(api.method?===?'delete'?||?api.method?===?'get')?{
??????try?{
????????config.params?=?newParams;
????????response?=?await?instance[api.method](api.url,?config);
??????}?catch?(err)?{
????????response?=?err;
??????}
????}
????return?response;???//?返回響應(yīng)值
??}
}
//?攔截器的添加
//?5.請求攔截器
instance.interceptors.request.use(
??//?發(fā)起請求前
??config?=>?{
????Toast.loading({
??????mask:?true,?//是否顯示陰影
??????duration:?0,?//?0是一直存在陰影,默認的是1000ms
??????forbidClick:?true,?//禁止點擊
??????message:?'加載中...'
????})
????return?config
??},
??//?請求失敗
??()?=>?{
????Toast.clear()
????Toast('請求錯誤,請稍后重試')
??}??
)
//?6.響應(yīng)攔截器
instance.interceptors.response.use(
??//?請求成功
??res?=>?{
????Toast.clear()
????return?res.data
??},
??()?=>?{
????Toast.clear()
????Toast('請求錯誤,請稍后重試')
??}
)
export?default?Http
2020-04-08