国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue-element-admin的接口請(qǐng)求

這篇具有很好參考價(jià)值的文章主要介紹了vue-element-admin的接口請(qǐng)求。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

以退出登錄接口為例

  1. 封裝request.js:添加請(qǐng)求攔截器和響應(yīng)攔截器
  2. 封裝permission.js:添加路由導(dǎo)航守衛(wèi)
  3. 在src/api/user.js中寫接口
  4. 在store中寫退出登錄邏輯
  5. 在vue頁(yè)面中調(diào)用登錄接口

1. 封裝request.js

請(qǐng)求攔截器:做一些發(fā)送請(qǐng)求前的操作,比如說(shuō)在請(qǐng)求頭上攜帶token,處理一些錯(cuò)誤
響應(yīng)攔截器:處理接口發(fā)送后的響應(yīng)數(shù)據(jù)

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

// 創(chuàng)建axios實(shí)例
const service = axios.create({
  baseURL: '/api', // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // 請(qǐng)求超時(shí)
})
// 請(qǐng)求攔截器
service.interceptors.request.use(
  (config) => {
    // 發(fā)送請(qǐng)求前的操作
    if (store.getters.token) {
      // 讓每個(gè)請(qǐng)求攜帶 token
      // 請(qǐng)根據(jù)實(shí)際情況修改
      config.headers.common['Authorization'] = getToken()
    
    return config
  },
  (error) => {
    // 處理請(qǐng)求錯(cuò)誤
    console.log('請(qǐng)求錯(cuò)誤', error) // for debug
    return Promise.reject(error)
  }
)

// 響應(yīng)攔截器
service.interceptors.response.use(
  /**
   * If you want to get http information such as headers or status
   * Please return  response => response
   */

  /**
   * 通過(guò)自定義代碼確定請(qǐng)求狀態(tài)
   * 這里只是一個(gè)例子
   * 您也可以通過(guò)HTTP狀態(tài)代碼來(lái)判斷狀態(tài)
   */
  (response) => {
    console.log(`?? ~ 響應(yīng)數(shù)據(jù):${response.config.url}`, response.data)
    const res = response.data

    // 如果code不是200,則判斷為錯(cuò)誤。
    if (res.code !== 200) {
      Message({
        message: res.message || 'Error',
        type: 'error',
        duration: 5 * 1000
      })

      // 50008: 非法 token; 50012: 其他客戶端已經(jīng)登錄; 50014: Token過(guò)期;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        // to re-login
        MessageBox.confirm(
          'You have been logged out, you can cancel to stay on this page, or log in again',
          'Confirm logout',
          {
            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) => {
    const { response } = error
    console.error('網(wǎng)絡(luò)繁忙', response)
    if (response) {
      if (response.status == 401) {
        router.push('/login')
        store.dispatch('user/logout')
        response.data = {
          success: false,
          errorMsg: '登錄信息已過(guò)期,請(qǐng)您重新登錄'
        }
        return response
      }
      return Promise.reject(
        '由于網(wǎng)絡(luò)繁忙,請(qǐng)求' + response.config.apiDesc + '有誤,請(qǐng)稍后再試'
      )
    } else {
      return Promise.reject('請(qǐng)求被中斷')
    }
  }
)

2. 封裝permission.js

import router from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import { getToken } from '@/utils/auth' // get token from cookie
import getPageTitle from '@/utils/get-page-title'

NProgress.configure({ showSpinner: false }) // NProgress Configuration

//接口白名單,這里面的頁(yè)面不需要登錄就可以直接訪問(wèn)
const whiteList = ['/login'] // no redirect whitelist

router.beforeEach(async (to, from, next) => {
  // start progress bar
  NProgress.start()

  // set page title
  document.title = getPageTitle(to.meta.title)

  // 判斷是否有token,確定用戶是否已登錄
  const hasToken = getToken()

  if (hasToken) {
    if (to.path === '/login') {
      // 如果已登錄,則重定向到主頁(yè)
      next({ path: '/' })
      NProgress.done()
    } else {
      const hasGetUserInfo = store.getters.name
      if (hasGetUserInfo) {
        next()
      } else {
        try {
          // 獲取用戶信息
          // await store.dispatch('user/getInfo')
          next()
        } catch (error) {
          // remove token and go to login page to re-login
          await store.dispatch('user/resetToken')
          Message.error(error || 'Has Error')
          next(`/login?redirect=${to.path}`)
          NProgress.done()
        }
      }
    }
  } else {
    /*沒(méi)有token*/

    if (whiteList.indexOf(to.path) !== -1) {
      // 在白名單中,直接進(jìn)入
      next()
    } else {
      // 其他沒(méi)有訪問(wèn)權(quán)限的頁(yè)面被重定向到登錄頁(yè)面
      next(`/login?redirect=${to.path}`)
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})

3. 在src/api/user.js中寫接口

import request from '@/utils/request'
//退出登錄
export function logout() {
  return request({
    url: '/typt-admin/admin/logout',
    method: 'post'
  })
}

4. 在store中寫退出登錄邏輯

其他代碼自己參照項(xiàng)目看,貼一段文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-603026.html

 // user logout
  logout({ commit, state }) {
    return new Promise((resolve, reject) => {
      logout(state.token)
        .then(() => {
          removeToken() // 刪除cookie中的token
          resetRouter()
          commit('RESET_STATE')
          resolve()
        })
        .catch((error) => {
          reject(error)
        })
    })
  },

最后直接在vue頁(yè)面引用就行

 methods: {
    async logout() {
      await this.$store.dispatch('user/logout')
      this.$router.push(`/login?redirect=${this.$route.fullPath}`)
    }
  }

到了這里,關(guān)于vue-element-admin的接口請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue-element-admin 快速構(gòu)建后臺(tái)系統(tǒng)

    vue-element-admin 快速構(gòu)建后臺(tái)系統(tǒng)

    vue-element-admin是基于element-ui 的一套后臺(tái)管理系統(tǒng)集成方案。 功能: https://panjiachen.github.io/vue-element-admin-site/zh/guide/# 功能 GitHub地址: https://github.com/PanJiaChen/vue-element-admin 項(xiàng)目在線預(yù)覽: https://panjiachen.gitee.io/vue-element-admin vue-admin-template是基于vue-element-admin的一套后臺(tái)管理系統(tǒng)

    2024年02月04日
    瀏覽(104)
  • 后臺(tái)管理系統(tǒng)模板推薦(vue-element-admin)

    后臺(tái)管理系統(tǒng)模板推薦(vue-element-admin)

    vue-element-admin 是基于vue 和 Element-ui 的一套后臺(tái)管理系統(tǒng)集成的模板 GitHub地址: https://github.com/PanJiaChen/vue-element-admin 項(xiàng)目在線預(yù)覽: https://panjiachen.gitee.io/vue-element-admin 由尚硅谷提供的 登錄頁(yè)面 主頁(yè)面 element-ui 是餓了么前端出品的基于 Vue.js的 后臺(tái)組件庫(kù),方便程序員進(jìn)行頁(yè)

    2024年02月16日
    瀏覽(22)
  • 【Vue-Element-Admin】table添加自定義索引

    通過(guò)給 type=index 的列傳入 index 屬性,可以自定義索引。該屬性傳入數(shù)字時(shí),將作為索引的起始值。也可以傳入一個(gè)方法,它提供當(dāng)前行的行號(hào)(從 0 開始)作為參數(shù),返回值將作為索引展示。

    2024年02月05日
    瀏覽(31)
  • 虛擬機(jī)Ubuntu下運(yùn)行vue-element-admin項(xiàng)目

    虛擬機(jī)Ubuntu下運(yùn)行vue-element-admin項(xiàng)目

    首先附上vue-element-admin項(xiàng)目的相關(guān)介紹鏈接 介紹 | vue-element-admin (gitee.io) 一.環(huán)境搭建 1.安裝nodejs 安裝完成后,查看對(duì)應(yīng)的版本號(hào) 沒(méi)有問(wèn)題,會(huì)輸出對(duì)應(yīng)版本號(hào),我這里是10.19.0 2.安裝npm 安裝完成查看對(duì)應(yīng)的版本號(hào),確認(rèn)OK 我這里是版本是6.14.4 3.安裝Vue 同樣查看一下版本號(hào)確

    2024年02月07日
    瀏覽(21)
  • 安裝運(yùn)行vue-element-admin的報(bào)錯(cuò)問(wèn)題-解決辦法

    安裝運(yùn)行vue-element-admin的報(bào)錯(cuò)問(wèn)題-解決辦法

    官網(wǎng)安裝鏈接如下: https://panjiachen.gitee.io/vue-element-admin-site/zh/guide/#%E5%AE%89%E8%A3%85 我遇到的報(bào)錯(cuò)主要在以下階段: 按上方安裝鏈接里git clone后npm install無(wú)法安裝 npm install完成后無(wú)法啟動(dòng),即npm run dev失敗 后經(jīng)查找網(wǎng)上各種資料,于 2022.11.20 完成安裝并成功運(yùn)行。 下面將分這兩

    2023年04月23日
    瀏覽(104)
  • 6. vue-element-admin 二次開發(fā)避坑指南

    6. vue-element-admin 二次開發(fā)避坑指南

    上一篇博文,我們分享了vue-element-admin二次開發(fā)的改造優(yōu)化技巧,這篇博文匯總 vue-element-admin 二次開發(fā)可能遇到的坑。 1.1.1 切換標(biāo)簽時(shí)未保存頁(yè)面的操作內(nèi)容 有時(shí)候會(huì)發(fā)現(xiàn)一個(gè)神奇的現(xiàn)象,當(dāng)打開多個(gè)tab標(biāo)簽,然后當(dāng)修改某個(gè)標(biāo)簽頁(yè)面內(nèi)容,再次切換標(biāo)簽頁(yè)面的時(shí)候,會(huì)發(fā)

    2024年02月10日
    瀏覽(23)
  • Vue-Element-Admin項(xiàng)目學(xué)習(xí)筆記(6)Vuex狀態(tài)管理

    Vue-Element-Admin項(xiàng)目學(xué)習(xí)筆記(6)Vuex狀態(tài)管理

    前情回顧: vue-element-admin項(xiàng)目學(xué)習(xí)筆記(1)安裝、配置、啟動(dòng)項(xiàng)目 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(2)main.js 文件分析 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(3)路由分析一:靜態(tài)路由 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(4)路由分析二:動(dòng)態(tài)路由及permission.js vue-element-admin項(xiàng)目學(xué)習(xí)筆記(5)路由分析

    2024年02月09日
    瀏覽(29)
  • Vue-element-admin項(xiàng)目中完全移除ES lint

    由于不需要用到eslint,因此需要完全移除此插件,過(guò)程如下: 在項(xiàng)目根目錄下,執(zhí)行以下命令,卸載與 ESLint 相關(guān)的依賴包: npm uninstall @vue/cli-plugin-eslint lint-staged husky eslint babel-eslint eslint-config-standard eslint-friendly-formatter eslint-loader eslint-plugin-html eslint-plugin-promise eslint-plugin-s

    2024年02月07日
    瀏覽(31)
  • 課程13:vue-element-admin安裝與移除實(shí)例代碼

    本文是《.Net Core從零學(xué)習(xí)搭建權(quán)限管理系統(tǒng)》教程專欄的課程(點(diǎn)擊

    2024年02月08日
    瀏覽(19)
  • 【Vue-Element-Admin】導(dǎo)出el-table全部數(shù)據(jù)

    因?yàn)閑l-table實(shí)現(xiàn)了分頁(yè)查詢,所以想要實(shí)現(xiàn)el-table需要重新編寫一個(gè)查詢?nèi)繑?shù)據(jù)的方法 listQuery:

    2024年02月09日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包