真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

vueaxios二次封裝的示例代碼

這段時間告訴項目需要,用到了vue。

成都創(chuàng)新互聯公司服務項目包括婁星網站建設、婁星網站制作、婁星網頁制作以及婁星網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,婁星網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到婁星省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

//引入axios
import axios from 'axios'

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

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

axios.defaults.baseURL = '/api'
//設置默認請求頭
axios.defaults.headers = {
 'X-Requested-With': 'XMLHttpRequest'
}
axios.defaults.timeout = 10000

export default {
 //get請求
 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請求
 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ā)起請求時,當前正在進行的相同請求,在請求攔截器中加入了hash判斷,將相同請求url攔截

2、將axios中get,post公共配置抽離出來

axios.defaults.baseURL = '/api'
//設置默認請求頭
axios.defaults.headers = {
 'X-Requested-With': 'XMLHttpRequest'
}
axios.defaults.timeout = 10000

3、get,post請求的封裝 可能你會問,這里的axios返回的就是promise對象,為什么還要再次對get,post封裝一次promise.因為我這邊的話,在開發(fā)中使用async await會出現數據請求失敗的情況,報的錯就是返回的不是promise對象。(ps:可async await返回的就是promise呀,這個問題后續(xù)再搞一下)就直接return了一個promise對象,以避免上面的錯誤。下面是請求接口的一個例子

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

下面是數據的獲取

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

到這里我們就簡單的封裝了一下適合自己項目的axios

封裝理由:

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

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

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

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

歸類好處:

1、后期接口升級或者接口名更改便于維護

http調用:

 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯。


分享標題:vueaxios二次封裝的示例代碼
文章位置:http://weahome.cn/article/gehpji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部