最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中axios的二次封裝實例講解

 更新時間:2019年10月14日 15:46:35   作者:CodeBug  
在本篇文章里小編給大家整理了關于vue中axios的二次封裝實例以及相關知識點總結,需要的朋友們可以學習下。

我們做項目時,雖然axios也可以直接拿來用,但是對接口比較零散,不太好進行維護,也會產(chǎn)生大量的重復代碼,所以我在這對axios進行了統(tǒng)一接口處理

第一步,先在src中的公共文件夾中如utils里新建request.js文件

import axios from 'axios'
import router from '@/router/routers'
import { Notification, MessageBox } from 'element-ui'
import store from '../store'
import { getToken } from '@/utils/auth'
import Config from '@/config'
 
import {baseUrl} from '@/utils/env'
 
// 創(chuàng)建axios實例
const service = axios.create({
 baseURL: baseUrl, // api 的 base_url
 // baseURL: process.env.BASE_API, // api 的 base_url
 timeout: Config.timeout // 請求超時時間
})
 
// request攔截器
service.interceptors.request.use(
 config => {
  if (getToken()) {
   config.headers['Authorization'] = 'Bearer ' + getToken() // 讓每個請求攜帶自定義token 請根據(jù)實際情況自行修改
  }
  config.headers['Content-Type'] = 'application/json'
  return config
 },
 error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
 }
)
 
// response 攔截器
service.interceptors.response.use(
 response => {
  const code = response.status
  console.log(response)
  if (code < 200 || code > 300) {
   Notification.error({
    title: response.message
   })
   return Promise.reject('error')
  } else {
   return response.data
  }
 },
 error => {
  let code = 0
  try {
   code = error.response.data.status
  } catch (e) {
   if (error.toString().indexOf('Error: timeout') !== -1) {
    Notification.error({
     title: '網(wǎng)絡請求超時',
     duration: 2500
    })
    return Promise.reject(error)
   }
   if (error.toString().indexOf('Error: Network Error') !== -1) {
    Notification.error({
     title: '網(wǎng)絡請求錯誤',
     duration: 2500
    })
    return Promise.reject(error)
   }
  }
  if (code === 401) {
   MessageBox.confirm(
    '登錄狀態(tài)已過期,您可以繼續(xù)留在該頁面,或者重新登錄',
    '系統(tǒng)提示',
    {
     confirmButtonText: '重新登錄',
     cancelButtonText: '取消',
     type: 'warning'
    }
   ).then(() => {
    store.dispatch('LogOut').then(() => {
     location.reload() // 為了重新實例化vue-router對象 避免bug
    })
   })
  } else if (code === 403) {
   router.push({ path: '/401' })
  } else {
   const errorMsg = error.response.data.message
   if (errorMsg !== undefined) {
    Notification.error({
     title: errorMsg,
     duration: 2500
    })
   }
  }
  return Promise.reject(error)
 }
)
export default service

代碼解讀:

 

將接口統(tǒng)一放到單獨的文件中如我的

引入request.js

第三步,

在頁面使用

好了,這就是axios的二次封裝

以上就是關于vue中axios的二次封裝的全部知識點內(nèi)容,感謝大家的學習和對腳本之家的支持。

相關文章

  • Vue使用Ref跨層級獲取組件的步驟

    Vue使用Ref跨層級獲取組件的步驟

    這篇文章主要介紹了Vue使用Ref跨層級獲取組件的步驟,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • Vue 數(shù)值改變頁面沒有刷新的問題解決(數(shù)據(jù)改變視圖不更新的問題)

    Vue 數(shù)值改變頁面沒有刷新的問題解決(數(shù)據(jù)改變視圖不更新的問題)

    這篇文章主要介紹了Vue 數(shù)值改變頁面沒有刷新的問題解決(數(shù)據(jù)改變視圖不更新的問題),本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Vue 實用分頁paging實例代碼

    Vue 實用分頁paging實例代碼

    本篇文章主要介紹了Vue 實用分頁paging實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 解決vue this.$forceUpdate() 處理頁面刷新問題(v-for循環(huán)值刷新等)

    解決vue this.$forceUpdate() 處理頁面刷新問題(v-for循環(huán)值刷新等)

    這篇文章主要介紹了解決vue this.$forceUpdate() 處理頁面刷新問題(v-for循環(huán)值刷新等),解決方法是使用this.$forceUpdate()強制刷新,文章給大家分享了代碼案例,需要的朋友參考下吧
    2018-07-07
  • vue2利用html2canvas+jspdf動態(tài)生成多頁PDF方式

    vue2利用html2canvas+jspdf動態(tài)生成多頁PDF方式

    利用vue2結合html2canvas和jspdf,可以實現(xiàn)前端頁面內(nèi)容導出為PDF的功能,首先需要安裝相關依賴,使用html2canvas將指定div內(nèi)容捕捉為圖像,再通過jspdf將圖像轉換為PDF
    2024-09-09
  • el-popover如何通過js手動控制彈出框顯示、隱藏

    el-popover如何通過js手動控制彈出框顯示、隱藏

    最近項目中多次用到了Popover彈出框,下面這篇文章主要給大家介紹了關于el-popover如何通過js手動控制彈出框顯示、隱藏的相關資料,需要的朋友可以參考下
    2023-12-12
  • 淺談關于iview表單驗證的問題

    淺談關于iview表單驗證的問題

    這篇文章主要介紹了淺談關于iview表單驗證的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue動態(tài)循環(huán)出的多個select出現(xiàn)過的變?yōu)閐isabled(實例代碼)

    vue動態(tài)循環(huán)出的多個select出現(xiàn)過的變?yōu)閐isabled(實例代碼)

    本文通過實例代碼給大家分享了vue動態(tài)循環(huán)出的多個select出現(xiàn)過的變?yōu)閐isabled效果,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • vue組件實例解析

    vue組件實例解析

    Tag組件其實是一個很小的組件,業(yè)務價值很低,主要用于Vue新手入門。主要實現(xiàn)Vue常用的父組件改變子組件的值,view改變model,model的變化反應到view上,事件的綁定等功能。下面跟著小編一起來看下吧
    2017-01-01
  • vue3?keep-alive實現(xiàn)tab頁面緩存功能

    vue3?keep-alive實現(xiàn)tab頁面緩存功能

    如何在我們切換tab標簽的時候,緩存標簽最后操作的內(nèi)容,簡單來說就是每個標簽頁中設置的比如搜索條件及結果、分頁、新增、編輯等數(shù)據(jù)在切換回來的時候還能保持原樣,這篇文章介紹vue3?keep-alive實現(xiàn)tab頁面緩存功能,感興趣的朋友一起看看吧
    2023-04-04

最新評論

涿州市| 揭阳市| 鹤岗市| 探索| 剑阁县| 湖南省| 牟定县| 陆良县| 苏尼特右旗| 南丹县| 正蓝旗| 福安市| 黑山县| 同德县| 金山区| 论坛| 偏关县| 旬邑县| 渑池县| 江源县| 乌鲁木齐县| 双桥区| 阆中市| 崇阳县| 石景山区| 浦东新区| 洛隆县| 桐梓县| 武平县| 镇雄县| 沙坪坝区| 濉溪县| 昌图县| 乐山市| 和硕县| 台江县| 奇台县| 石家庄市| 霍城县| 舒兰市| 高唐县|