亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue axios 二次封裝的示例代碼

 更新時(shí)間:2017年12月08日 11:05:17   作者:Justnull  
本篇文章主要介紹了vue axios 二次封裝的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

這段時(shí)間告訴項(xiàng)目需要,用到了vue。

剛開始搭框架的時(shí)候用的是vue-resource后面看到官方推薦axios就換過來了 順便封裝了一下

//引入axios
import axios from 'axios'

let cancel ,promiseArr = {}
const CancelToken = axios.CancelToken;
//請(qǐng)求攔截器
axios.interceptors.request.use(config => {
 //發(fā)起請(qǐng)求時(shí),取消掉當(dāng)前正在進(jìn)行的相同請(qǐng)求
 if (promiseArr[config.url]) {
  promiseArr[config.url]('操作取消')
  promiseArr[config.url] = cancel
 } else {
  promiseArr[config.url] = cancel
 }
  return config
}, error => {
 return Promise.reject(error)
})

//響應(yīng)攔截器
axios.interceptors.response.use(response => {
 return response
}, error => {
 return Promise.resolve(error.response)
})

axios.defaults.baseURL = '/api'
//設(shè)置默認(rèn)請(qǐng)求頭
axios.defaults.headers = {
 'X-Requested-With': 'XMLHttpRequest'
}
axios.defaults.timeout = 10000

export default {
 //get請(qǐng)求
 get (url,param) {
  return new Promise((resolve,reject) => {
  axios({
   method: 'get',
   url,
   params: param,
   cancelToken: new CancelToken(c => {
   cancel = c
   })
  }).then(res => {
   resolve(res)
  })
  })
 },
 //post請(qǐng)求
 post (url,param) {
  return new Promise((resolve,reject) => {
  axios({
   method: 'post',
   url,
   data: param,
   cancelToken: new CancelToken(c => {
   cancel = c
   })
  }).then(res => {
   resolve(res)
  })
  })
  }
 }

說明

1、為防止發(fā)起請(qǐng)求時(shí),當(dāng)前正在進(jìn)行的相同請(qǐng)求,在請(qǐng)求攔截器中加入了hash判斷,將相同請(qǐng)求url攔截

2、將axios中g(shù)et,post公共配置抽離出來

axios.defaults.baseURL = '/api'
//設(shè)置默認(rèn)請(qǐng)求頭
axios.defaults.headers = {
 'X-Requested-With': 'XMLHttpRequest'
}
axios.defaults.timeout = 10000

3、get,post請(qǐng)求的封裝 可能你會(huì)問,這里的axios返回的就是promise對(duì)象,為什么還要再次對(duì)get,post封裝一次promise.因?yàn)槲疫@邊的話,在開發(fā)中使用async await會(huì)出現(xiàn)數(shù)據(jù)請(qǐng)求失敗的情況,報(bào)的錯(cuò)就是返回的不是promise對(duì)象。(ps:可async await返回的就是promise呀,這個(gè)問題后續(xù)再搞一下)就直接return了一個(gè)promise對(duì)象,以避免上面的錯(cuò)誤。下面是請(qǐng)求接口的一個(gè)例子

import req from '../api/requestType'
/**
 * 拼團(tuán)詳情
 */
export const groupDetail = param => {
 return req.get('/RestHome/GroupDetail',param)
}

下面是數(shù)據(jù)的獲取

async getData() {
 const params = {
  TopCataID: 0,
  pageNumber: this.pageNumber,
  pageSize: this.pageSize
 }
 const res = await groupList(params)
},

到這里我們就簡(jiǎn)單的封裝了一下適合自己項(xiàng)目的axios

封裝理由:

1、可以和后端商量好錯(cuò)誤碼在這統(tǒng)一提示統(tǒng)一處理,省去不必要的麻煩

2、如果做接口全報(bào)文加解密都可以在此處理

接口統(tǒng)一歸類: 

const serviceModule = { 
 getLocation: { 
 url: ' service/location/transfor', 
 method: 'get' 
 } 
} 
const ApiSetting = {...serviceModule } 
 
export default ApiSetting 

歸類好處:

1、后期接口升級(jí)或者接口名更改便于維護(hù)

http調(diào)用:

<script> 
import http from "../../lib/http.js"; 
import ApiSetting from "../../lib/ApiSetting.js"; 
export default { 
 created: function() { 
 http(ApiSetting.getLocation,{"srChannel": "h5",}) 
 .then((res)=>{ 
  console.log(res) 
 },(error)=>{ 
  console.log(error)  
 }) 
 }, 
 methods: { 
 
 } 
} 
</script> 

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 常見的5種Vue組件通信方式總結(jié)

    常見的5種Vue組件通信方式總結(jié)

    在?Vue.js?中,組件通信是開發(fā)過程中非常重要的一部分,它涉及到不同組件之間的數(shù)據(jù)傳遞和交互,本文將介紹如何實(shí)現(xiàn)父子組件之間的有效通信,并盤點(diǎn)了常見的5種Vue組件通信方式總結(jié),需要的朋友可以參考下
    2024-03-03
  • 如何利用vue實(shí)現(xiàn)登陸界面及其跳轉(zhuǎn)詳解

    如何利用vue實(shí)現(xiàn)登陸界面及其跳轉(zhuǎn)詳解

    在開發(fā)中我們經(jīng)常遇到這樣的需求,需要用戶直接點(diǎn)擊一個(gè)鏈接進(jìn)入到一個(gè)頁面,下面這篇文章主要給大家介紹了關(guān)于如何利用vue實(shí)現(xiàn)登陸界面及其跳轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue.js學(xué)習(xí)筆記之綁定style樣式和class列表

    vue.js學(xué)習(xí)筆記之綁定style樣式和class列表

    數(shù)據(jù)綁定一個(gè)常見需求是操作元素的 class 列表和它的內(nèi)聯(lián)樣式。這篇文章主要介紹了vue.js綁定style和class的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤

    vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • element-ui動(dòng)態(tài)級(jí)聯(lián)選擇器回顯問題詳解(二十多行代碼搞定)

    element-ui動(dòng)態(tài)級(jí)聯(lián)選擇器回顯問題詳解(二十多行代碼搞定)

    大家在使用element-ui的時(shí)候肯定會(huì)遇到這樣一個(gè)問題,就是在你使用級(jí)聯(lián)選擇器的回顯問題,下面這篇文章主要給大家介紹了關(guān)于element-ui動(dòng)態(tài)級(jí)聯(lián)選擇器回顯問題的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • vue中如何簡(jiǎn)單封裝axios淺析

    vue中如何簡(jiǎn)單封裝axios淺析

    Axios 毋庸多說大家在前端開發(fā)中常用的一個(gè)發(fā)送 HTTP 請(qǐng)求的庫,用過的都知道,篇文章主要給大家介紹了關(guān)于vue中如何簡(jiǎn)單封裝axios的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 詳解如何在Vue組件方法中加載和使用匿名函數(shù)

    詳解如何在Vue組件方法中加載和使用匿名函數(shù)

    在Vue.js的開發(fā)過程中,組件方法的定義和調(diào)用是非常常見的,有時(shí)候,為了響應(yīng)事件或其他操作,我們需要在組件的方法中使用匿名函數(shù),本文將深入探討如何在Vue組件的方法中加載和使用匿名函數(shù),并提供詳細(xì)的代碼示例和解釋,幫助開發(fā)者更好地理解和應(yīng)用這些技術(shù)
    2024-09-09
  • 利用vue + koa2 + mockjs模擬數(shù)據(jù)的方法教程

    利用vue + koa2 + mockjs模擬數(shù)據(jù)的方法教程

    這篇文章主要給大家介紹了關(guān)于利用vue + koa2 + mockjs模擬數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • vue+golang實(shí)現(xiàn)上傳微信頭像功能

    vue+golang實(shí)現(xiàn)上傳微信頭像功能

    這篇文章主要介紹了vue+golang實(shí)現(xiàn)上傳微信頭像功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • Vue中$attrs與$listeners的使用教程

    Vue中$attrs與$listeners的使用教程

    這篇文章主要介紹了Vue中$attrs與$listeners的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11

最新評(píng)論