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

Vue接口封裝的完整步驟記錄

 更新時(shí)間:2021年05月14日 11:18:07   作者:火腿腸燒烤大賽冠軍  
對(duì)于中小型企業(yè),vue應(yīng)用越來越多,學(xué)習(xí)vue相對(duì)于react的成本要低點(diǎn),入門相對(duì)簡(jiǎn)單。這篇文章主要給大家介紹了關(guān)于Vue接口封裝的相關(guān)資料,需要的朋友可以參考下

首先根據(jù)接口寫好對(duì)應(yīng)頁面的請(qǐng)求

內(nèi)容如圖盡量保證js文件名稱與頁面文件名稱相同(易于查找)

根據(jù)文件目錄動(dòng)態(tài)引入/導(dǎo)出接口

提高便捷性

/**
 * 自動(dòng)引入當(dāng)前文件夾下所有module
 * require.context(directory, useSubdirectories = false, regExp = /^.//);
 * @param {String} directory 讀取文件的路徑
 * @param {Boolean} directory 匹配文件的正則表達(dá)式
 * @param {regExp} regExp 讀取文件的路徑
 */
 const modulesFiles = require.context(
    './', // 在當(dāng)前目錄下查找
    false, // 不遍歷子文件夾
    /\.js$/ // 正則匹配 以 .js結(jié)尾的文件
)
 const modules = modulesFiles.keys().reduce((modules, modulePath) => {
   const moduleName = modulePath.replace(/^.\/(.*)\.js/,'$1')
   const value = modulesFiles(modulePath)
   modules[moduleName] = value.default
   return modules
   }, {})

export default modules

根據(jù)項(xiàng)目情況編寫攔截/插入內(nèi)容

import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'

// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

// request interceptor
service.interceptors.request.use(
  config => {
    // 在發(fā)送請(qǐng)求之前做些什么

    if (store.getters.token) {
      // let each request carry token讓每個(gè)請(qǐng)求攜帶令牌
      // ['X-Token'] is a custom headers key 是一個(gè)自定義標(biāo)題鍵
      // please modify it according to the actual situation請(qǐng)根據(jù)實(shí)際情況修改
      config.headers['X-Token'] = getToken()
    }
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)

// response interceptor
service.interceptors.response.use(
  /**
   * If you want to get http information such as headers or status如果您想獲取http信息,如標(biāo)頭或狀態(tài)
   * Please return  response => response
  */

  /**
   * Determine the request status by custom code通過自定義代碼確定請(qǐng)求狀態(tài)
   * Here is just an example這里只是一個(gè)例子
   * You can also judge the status by HTTP Status Code您還可以通過HTTP狀態(tài)碼來判斷狀態(tài)
   */
  response => {
    const res = response.data
    // console.log(res);
    // 如果自定義代碼不是20000,則判斷為錯(cuò)誤.
    if (res.code !== 200) {
      Message({
        message: res.message || 'Error',
        type: 'error',
        duration: 5 * 1000
      })
      
      // 50008: 非法token; 50012: 其他客戶端已登錄; 50014: Token 已過期;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        // to re-login
        MessageBox.confirm('您已注銷,可以取消以停留在此頁面,或重新登錄', '確認(rèn)注銷', {
          confirmButtonText: 'Re-Login',
          cancelButtonText: 'Cancel',
          type: 'warning'
        }).then(() => {
          store.dispatch('user/resetToken').then(() => {
            location.reload()
          })
        })
      }
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    console.log('err' + error) // for debug
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service

編寫env文件

# just a flag
ENV = 'development'

# base api
VUE_APP_BASE_API = 'http://192.168.2.44:5001/v1'

vue繼承api

import serve from './api/index'
Vue.prototype.$api = serve;

使用

getAssetsList() {
  this.$api.assets
    .getAssetsList(this.queryInfo.num, this.queryInfo.size)
    .then((res) => {
      this.assetsList = res.data.cards
      this.total = res.data.page.totalCount
    })
    .catch(() => {
      this.$message.error({
        message: "失敗",
        duration: 700,
      })
    })
},

總結(jié)

到此這篇關(guān)于Vue接口封裝的文章就介紹到這了,更多相關(guān)Vue接口封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Vue.js實(shí)現(xiàn)checkbox的全選反選效果

    利用Vue.js實(shí)現(xiàn)checkbox的全選反選效果

    最近用vue做了兩個(gè)項(xiàng)目,都需要實(shí)現(xiàn)全選反選的功能,所以想著記錄下分享給大家,方便自己或者有需要的朋友們參考講學(xué)習(xí),所以下面這篇文章主要介紹了利用Vue.js實(shí)現(xiàn)checkbox的全選反選效果,需要的朋友可以一起來學(xué)習(xí)學(xué)習(xí)。
    2017-01-01
  • vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)

    vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)

    在使用reactive定義的變量時(shí),直接賦值會(huì)失去響應(yīng)式,為了清空?filters并確保響應(yīng)式,可以使用Object.assign({},?filters)或者遍歷對(duì)象逐個(gè)清除屬性,本文介紹vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了),感興趣的朋友一起看看吧
    2025-02-02
  • vue3 setup() 高級(jí)用法示例詳解

    vue3 setup() 高級(jí)用法示例詳解

    從 vue2 升級(jí)到 vue3,vue3 是可以兼容 vue2 的,所以 vue3 可以采用 vue2 的選項(xiàng)式API。這篇文章主要介紹了vue3 setup() 高級(jí)用法,需要的朋友可以參考下
    2021-11-11
  • Vue2.0使用嵌套路由實(shí)現(xiàn)頁面內(nèi)容切換/公用一級(jí)菜單控制頁面內(nèi)容切換(推薦)

    Vue2.0使用嵌套路由實(shí)現(xiàn)頁面內(nèi)容切換/公用一級(jí)菜單控制頁面內(nèi)容切換(推薦)

    這篇文章主要介紹了Vue2.0使用嵌套路由實(shí)現(xiàn)頁面內(nèi)容切換/公用一級(jí)菜單控制頁面內(nèi)容切換,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • VUE中filters過濾器的兩種用法實(shí)例

    VUE中filters過濾器的兩種用法實(shí)例

    vue中過濾器的作用可被用于一些常見的文本格式化,也就是修飾文本,但是文本內(nèi)容不會(huì)改變,下面這篇文章主要給大家介紹了關(guān)于VUE中filters過濾器的兩種用法,需要的朋友可以參考下
    2022-04-04
  • vue-cli打包后本地運(yùn)行dist文件中的index.html操作

    vue-cli打包后本地運(yùn)行dist文件中的index.html操作

    這篇文章主要介紹了vue-cli打包后本地運(yùn)行dist文件中的index.html操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue組件name的作用小結(jié)

    vue組件name的作用小結(jié)

    大家在寫vue項(xiàng)目的時(shí)候會(huì)遇到給組件的各種命名,接下來通過本文給大家分享vue組件name的作用小結(jié),感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • vue3?中使用?jsx?開發(fā)的詳細(xì)過程

    vue3?中使用?jsx?開發(fā)的詳細(xì)過程

    這篇文章主要介紹了vue3?中使用?jsx?開發(fā),本文著重說一下在使用 .vue 文件和 .jsx 文件在使用語法上的差異,需要的朋友可以參考下
    2022-09-09
  • VUE中鼠標(biāo)滾輪使div左右滾動(dòng)的方法詳解

    VUE中鼠標(biāo)滾輪使div左右滾動(dòng)的方法詳解

    這篇文章主要給大家介紹了關(guān)于VUE中鼠標(biāo)滾輪使div左右滾動(dòng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Vue祖孫組件如何實(shí)現(xiàn)傳值

    Vue祖孫組件如何實(shí)現(xiàn)傳值

    這篇文章主要介紹了Vue祖孫組件如何實(shí)現(xiàn)傳值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

娄烦县| 台前县| 河源市| 丹江口市| 珠海市| 马边| 枝江市| 图木舒克市| 金川县| 平泉县| 松阳县| 石家庄市| 沐川县| 丰顺县| 甘泉县| 长宁县| 容城县| 沧源| 德清县| 龙南县| 综艺| 武川县| 兴宁市| 唐河县| 罗源县| 垣曲县| 大城县| 叶城县| 大方县| 张家界市| 沁源县| 福泉市| 玛多县| 东山县| 中西区| 双峰县| 庆城县| 舞阳县| 汉源县| 河西区| 信丰县|