vue axios的二次封裝

来源:https://www.cnblogs.com/shuisanya/archive/2022/08/27/16630320.html
-Advertisement-
Play Games

1、axios的二次封裝 BiliBili作者原地址,多多支持 npm i axios //下載axios 首先創建兩個文件夾在src目錄下;api和config 先在config文件夾下建立一個index.js;具體代碼如下 export default{ baseUrl:{ dev: "http ...


1、axios的二次封裝

BiliBili作者原地址,多多支持

  npm i axios    //下載axios

首先創建兩個文件夾在src目錄下;api和config

  1. 先在config文件夾下建立一個index.js;具體代碼如下

    export default{
        baseUrl:{
            dev: "http://localhost:8082/mhy",	//開發環境
            pro: "http://xxx.xx.xx.xx:8082/mhy",	//上線環境
        }
    }
    

    當然我這裡是因為我主要寫後端springboot,就沒有使用什麼第三方前端的請求工具

  2. api文件夾下建立一個axios.js;對axios進行二次封裝

    import axios from "axios"
    import config from "@/config"
    
    // const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev:config.baseUrl.pro
    const baseUrl = config.baseUrl.pro
    
    class HttpRequest{
        //構造器
        constructor(baseUrl){
            this.baseUrl = baseUrl
        }
    
        //請求路徑設置
        getInsideConfig(){
            const config = {
                baseURL:this.baseUrl,
                Header:{}
            }
            return config
        }
    
        //添加攔截器
        interceptors(instance){
            // 添加請求攔截器
            instance.interceptors.request.use(function (config) {
                // 在發送請求之前做些什麼
                const token = localStorage.getItem("Accept-Token");
                if(token !== null && token !== ""){
                    config.headers["Accept-Token"] = token;
                }
                return config;
            }, function (error) {
                // 對請求錯誤做些什麼
                // console.log('添加請求攔截器 請求錯誤')
                return Promise.reject(error);
            });
    
            // 添加響應攔截器
            instance.interceptors.response.use(function (response) {
                // 對響應數據做點什麼
                // console.log('添加請求攔截器 響應')
                return response;
            }, function (error) {
                // 對響應錯誤做點什麼
                // console.log('添加請求攔截器 響應錯誤')
                return Promise.reject(error);
            });
        }
    
        // 二次封裝的請求
        request(options) {
            const instance = axios.create()
            options = {...this.getInsideConfig(),...options}
            this.interceptors(instance)
            return instance(options)
        }
    
    }
    
    export default new HttpRequest(baseUrl)
    
  3. 最後在api文件夾下創建你需要調用的api,當然你可以寫在一個裡面,也可以不同模塊分開寫

    我這裡是分開寫的

  4. 然後看看具體怎麼使用

    fileApi.js

    import axios from "./axios";
    
    // 上傳文件圖片
    export const uploadImgAPI = (param) => {
        return axios.request({
            url: `/uploadImg/${param.id}`,
            method: "post",
            data: param.formData
        })
    }
    
    // 刪除一個文件
    export const deleteImgAPI = (param) => {
        return axios.request({
            url: `/deleteImg`,
            method: "post",
            data: param
        })
    }
    

    簡單的寫一個;在組件中引入就可以使用了

    import { deleteImgAPI, uploadImgAPI } from '@/api/fileApi'
    

  5. 當然最後你也可以全局註冊一下,然後直接通過proxy調用,也很方便,這裡就不多展示了


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Artlantis studio 2021 for Mac是 Mac 平臺上一款專業的 3D 高級渲染器,artlantis mac版專為設計師和建築師所設計,能夠為您快速創建出 VR 全景,動畫和 3D 透視圖等效果。artlantis 2021憑藉著出色的動畫製作,超凡的質量與渲染,iVisit ...
  • 帝國時代3是一款即時戰略游戲,這次為大家帶來的是帝國時代3三合一完整版,包含了帝國時代III原版、帝國時代III-酋長、帝國時代III-亞洲王朝三個中文版本,向玩家展示了不同民族風格迥異的經濟體制和作戰方式,游戲經過簡化,極易上手,玩家可以選擇在各具特色的歐洲國家中感受新增的城市及卡片技能樹系統,游 ...
  • JDBC 一、JDBC概述 什麼是JDBC? **JDBC 是使用 Java 語言操作關係型資料庫的一套 API。**這套 API 是交由不同的資料庫廠商實現的。我們利用 JDBC 編寫操作資料庫的代碼,真正執行的是各個資料庫的實現類(驅動)。 全稱:(Java DataBase Connectiv ...
  • 1.MySQL中執行一條SQL的總體流程 2.SQL函數執行過程 1.MySQL中執行一條SQL的總體流程 一條包含函數的SQL語句,在mysql中會經過: 客戶端發送,伺服器連接,語法解析,語句執行的過程。 調試源碼,分析函數的具體執行過程,在客戶端,執行select to_char(‘test’ ...
  • 概述 Redis 在 3.0 之後開始支持 Cluster(集群)模式,特點如下: 支持節點的自動發現:可向集群動態添加節點,並自動融入 支持 slave-master 選舉和容錯:多個 master 宕機後,選舉出新的 master 繼續工作 線上分片:當有新的節點加入時,為新節點分配 slot ...
  • 摘要:今天給大家帶來一篇MySQL資料庫崩潰的修複案例 本文分享自華為雲社區《記一次MySQL崩潰修複案例,再也不用刪庫跑路了》,作者: 冰 河。 問題描述 研究MySQL源代碼,調試並壓測MySQL源代碼時,MySQL崩潰了!問題是它竟然崩潰了!而且還損壞了InnoDB文件!!還好是在調試環境下發 ...
  • 如何去掉vue的url地址中的#號?及其原理? 點擊打開視頻講解更加詳細 如何去掉vue的url地址中的#號? import Vue from 'vue'; import VueRouter from 'vue-router'; Vue.use(VueRouter) // 1. 定義一些路由 // ...
  • ##Query 是一個 JavaScript 函數庫。 jQuery 是一個輕量級的"寫的少,做的多"的 JavaScript 庫。 jQuery 庫包含以下功能: HTML 元素選取 HTML 元素操作 CSS 操作 HTML 事件函數 JavaScript 特效和動畫 HTML DOM 遍歷和修 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...