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

vue3+axios封裝攔截器方式

 更新時間:2024年09月18日 09:54:43   作者:jnfy  
介紹了如何在Vue項目中使用Axios封裝請求、配置攔截器,并在api.js中統(tǒng)一管理API接口,同時,也講解了如何在vite.config.js中配置解決跨域問題,這些操作可以優(yōu)化前端代碼結構,提高開發(fā)效率

安裝axios

 yarn add axios
 npm install axios

封裝請求配置攔截器

src/api/axios.js中封裝我們的請求。

import axios from "axios";
import {useCommonStore} from "../store/module/common.js";
import {storeToRefs} from "pinia";

// 設置接口超時時間
axios.defaults.timeout = 60000;
// 請求地址
axios.defaults.baseURL = '';

// http request 攔截器
axios.interceptors.request.use(
    config =>{
        // 獲取token
        const  commonStore = useCommonStore()
        const { token } = storeToRefs( commonStore )
        console.log('token',token.value)
        // 配置請求頭
        config.headers = {
            // 'Content-Type':'application/x-www-form-urlencoded',   // 傳參方式表單
            'Content-Type': 'application/json;charset=UTF-8', // 傳參方式json
            'Authorization': `Bearer ${token.value}`, // 設置Authorization
            // 'token': token.value // 或者設置token

        };
        return config;
    },
    error => {
        return Promise.reject(error);
    }
)

// http response 攔截器
axios.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        const { response } = error;
        if (response) {
            // 判斷錯誤狀態(tài)碼
            if (response.status === 400) {
                // 請求400
            } else if (response.status === 401) {
                // 未授權,請重新登錄
            } else if (response.status === 403) {
                // 拒絕訪問(403)
            }
            return Promise.reject(response.data);
        } else {
            console.log('網(wǎng)絡連接異常,請稍后再試!')
        }
    }
)

// 封裝 get post 請求
export function request (url,params = {},type = 'POST') {
    return new Promise((resolve,reject) => {
        let promise
        if (type.toUpperCase() === 'GET') {
            promise = axios({url,params})
        } else if (type.toUpperCase() === 'POST') {
            promise = axios({
                method: 'POST',
                url,
                data: params
            })
        }

        promise.then( res => {
            resolve(res)
        }).catch (err => {
            reject(err)
        })
    })
}

api統(tǒng)一管理

src/api/api.js文件中統(tǒng)一管理我們的接口api

// 引入 request
import { request } from "./axios.js"

// 模塊化接口
export class UserApi {
    static async login(params) {
        return request('/login',params,'post')
    }
    static async register(params) {
        return request('/register',params,'post')
    }
    static async getUserInfo(params) {
        return request('/userInfo',params,'get')
    }
}

export class BookApi {
    static async getBookList(params) {
        return request('/bookList',params,'get')
    }
}

應用

<script setup>
import {UserApi} from "../api/api.js";
const login = async () => {
  const params = {
    username: 'admin',
    password: '123456',
  }
  const res = await UserApi.login(params)
}
</script>

跨域問題

vite.config.js配置。

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server: {
    host: '127.0.0.1',
    port: 3000,
    proxy: {
      '/api': {
        target: '', // 實際請求地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  },
}

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用Bootrap和Vue實現(xiàn)仿百度搜索功能

    使用Bootrap和Vue實現(xiàn)仿百度搜索功能

    這篇文章主要介紹了使用Bootrap和Vue實現(xiàn)仿百度搜索功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-10-10
  • Element-UI+Vue模式使用總結

    Element-UI+Vue模式使用總結

    這篇文章主要介紹了Element-UI+Vue模式使用總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • vue實現(xiàn)頁面添加水印效果

    vue實現(xiàn)頁面添加水印效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)頁面添加水印效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue中路由router配置步驟詳解

    vue中路由router配置步驟詳解

    vue的主要思想是組件化開發(fā),路由用來配置組件對應展示路徑,本文給大家介紹vue中路由router配置步驟,創(chuàng)建路由文件——使用路由——配置路由出口,使路由配置內容展示在頁面上,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • 詳解基于Vue/React項目的移動端適配方案

    詳解基于Vue/React項目的移動端適配方案

    這篇文章主要介紹了詳解基于Vue/React項目的移動端適配方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • vue?axios接口請求封裝方式

    vue?axios接口請求封裝方式

    這篇文章主要介紹了vue?axios接口請求封裝方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 基于Vue自定義指令實現(xiàn)按鈕級權限控制思路詳解

    基于Vue自定義指令實現(xiàn)按鈕級權限控制思路詳解

    這篇文章主要介紹了基于vue自定義指令實現(xiàn)按鈕級權限控制,本文給大家介紹的非常詳細,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05
  • vue elementUI實現(xiàn)拖拽流程圖效果

    vue elementUI實現(xiàn)拖拽流程圖效果

    這篇文章主要為大家詳細介紹了如何通過vue elementUI實現(xiàn)拖拽流程圖效果,不引入插件,純手寫實現(xiàn),感興趣的小伙伴可以跟隨小編一起學習一下
    2025-01-01
  • Vue實現(xiàn)用戶登錄及token驗證

    Vue實現(xiàn)用戶登錄及token驗證

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)用戶登錄及token驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 親自動手實現(xiàn)vue日歷控件

    親自動手實現(xiàn)vue日歷控件

    這篇文章主要記錄了親自動手實現(xiàn)vue日歷控件的詳細過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論

武功县| 井研县| 临沭县| 仪陇县| 达州市| 常德市| 淳安县| 恭城| 于田县| 舟曲县| 惠水县| 威海市| 定兴县| 武功县| 龙南县| 科技| 长垣县| 揭西县| 威海市| 奇台县| 屯昌县| 抚顺县| 罗定市| 定南县| 鹤庆县| 德兴市| 长白| 同仁县| 内丘县| 吴川市| 清原| 山西省| 乌拉特前旗| 卢湾区| 吴旗县| 芜湖县| 丰顺县| 博湖县| 长垣县| 琼海市| 乌拉特中旗|