vue3 學習筆記04 -- axios的使用及封裝

vue3 學習筆記04 – axios的使用及封裝

  • 安裝 Axios 和 TypeScript 類型定義
npm install axios
npm install -D @types/axios

創建一個 Axios 實例并封裝成一個可復用的模塊,這樣可以在整個應用中輕松地進行 API 請求管理。

  • 在 src 目錄下創建一個 services 文件夾,并在其中創建 api.ts 文件:
  // src/services/api.tsimport axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';// 創建一個 axios 實例
const api: AxiosInstance = axios.create({baseURL: import.meta.env.VITE_APP_BASE_API,timeout: 30000, // 請求超時時間headers: {'Content-Type': 'application/json'// 其他默認請求頭可以在這里配置}
});// 請求攔截器
api.interceptors.request.use((config: AxiosRequestConfig) => {// 在請求發送之前做些什么,例如加入 token 等操作return config;},(error) => {// 處理請求錯誤return Promise.reject(error);}
);// 響應攔截器
api.interceptors.response.use((response: AxiosResponse) => {// 在響應數據返回之前做些什么,例如對響應數據進行處理return response.data;},(error) => {// 處理響應錯誤return Promise.reject(error);}
);export default api;
  • 項目根目錄新建.env.dev – 開發環境變量
NODE_ENV = 'development'
VITE_APP_BASE_API = '/api'
VITE_APP_TARGET_URL = "https://api.example.com"
  • 項目根目錄新建.env.pro – 生產環境變量
NODE_ENV = 'production'
VITE_APP_BASE_API = '/api'
VITE_APP_TARGET_URL = "https://api.example.com"
  • vite.config.ts中配置proxy
export default defineConfig({plugins: [vue()],server:{host: '0.0.0.0', // 允許IP訪問proxy: {[env.VITE_APP_BASE_API]: {changeOrigin: true,target: env.VITE_APP_TARGET_URL,secure: false,rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_BASE_API}`), '')},}}
})
  • 使用axios封裝

    • 在src/api文件下新建login/login.ts文件
          import api from '@/services/api';import { AxiosPromise } from "axios";import { LoginData, LoginResult } from "./types";export function login(data:LoginData):AxiosPromise<LoginResult> {return api({url: '/mock/user/login',method: 'post',data})}
      
    • src/login/types.ts
          export interface LoginData {/*** 用戶名*/username: string;/*** 密碼*/password: string;}export interface userInfoVo {id: numbername: stringphone: number}/*** 登錄響應*/export interface LoginResult {/*** token*/token?: string;/*** 過期時間(單位:毫秒)*/expireAt?: number;/*** 刷新token*/refreshToken?: string;/*** 用戶信息*/userInfo?: userInfoVo[];}
      
  • vue文件中使用

<template>form表單.....
<el-button class="login-button" type="primary" @click="handleLogin" :loading="loading">登錄</el-button>
</template> 
<script setup lang="ts">
import { login } from '@/api/login/login'
import { useRouter } from 'vue-router'
let loading = ref(false)
const router = useRouter()
const handleLogin = ()=>{let data = {username:'xxx',password:'xxx'}loading.value = truelogin(data).then((res)=>{loading.value = false// 一些存儲token及其他信息的處理的處理....要干的事router.push('/')})
}
</script>  

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/45043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/45043.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/45043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于鋰電池的充電過程

鋰電池的充電階段大概可以分為四個階段&#xff1a;涓流充電、恒流充電、恒壓充電以及充電終止。 涓流充電&#xff1a;這是充電過程的第一階段&#xff0c;主要用于對完全放電的電池單元進行預充&#xff08;恢復性充電&#xff09;。當電池電壓低于大概3V時&#xff0c;采用最…

【學習css1】flex布局-頁面footer部分保持在網頁底部

中間內容高度不夠屏幕高度撐不開的頁面時候&#xff0c;頁面footer部分都能保持在網頁頁腳&#xff08;最底部&#xff09;的方法 1、首先上圖看顯示效果 2、奉上源碼 2.1、html部分 <body><header>頭部</header><main>主區域</main><foot…

PaintsUndo - 一張照片一鍵生成繪畫過程視頻 本地一鍵整合包下載

這就是ControlNet作者張呂敏大佬的新作&#xff0c;PaintsUndo。只要你有一張圖片&#xff0c;PaintsUndo 就能讓它變成完整的繪畫過程視頻。這科技&#xff0c;絕了。 你有沒有想過&#xff0c;一張靜態圖片也能變成一個繪畫教程? PaintsUndo 就是這么神奇。你只需要提供一…

通過手機供網、可修改WIFI_MAC的網絡設備

一、修改WIFI mac&#xff08;bssid&#xff09; 取一根網線&#xff0c;一頭連著設備黃色網口、一頭連著電腦按住設備reset按鍵&#xff0c;插入電源線&#xff0c;觀察到藍燈閃爍后再松開reset按鍵 打開電腦瀏覽器&#xff0c;進入192.168.1.1&#xff0c;選擇“MAC 地址修改…

【Spring Boot】Spring原理:Bean的作用域和生命周期

目錄 Spring原理一. 知識回顧1.1 回顧Spring IOC1.2 回顧Spring DI1.3 回顧如何獲取對象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知識回顧 在之前IOC/DI的學習中我們也用到了Bean對象&#xff0c;現在先來回顧一下IOC/DI的知識吧&#xff01; 首先Spring IOC&am…

可視化學習:如何用WebGL繪制3D物體

在之前的文章中&#xff0c;我們使用WebGL繪制了很多二維的圖形和圖像&#xff0c;在學習2D繪圖的時候&#xff0c;我們提過很多次關于GPU的高效渲染&#xff0c;但是2D圖形的繪制只展示了WebGL部分的能力&#xff0c;WebGL更強大的地方在于&#xff0c;它可以繪制各種3D圖形&a…

C語言之數據在內存中的存儲(2),浮點數在內存中的存儲

目錄 前言 一、引例 二、浮點型在內存中的存儲 三、浮點數在內存中的存和取過程 1.浮點數的存儲過程 2.浮點數的取過程 四、引例解析 總結 前言 想知道浮點數在內存中是如何存儲的嗎&#xff0c;本文就告訴你答案&#xff0c;雖然一般情況題目還是面試涉及到浮點數在內…

新華三H3CNE網絡工程師認證—ACL使用場景

ACL主要用于實現流量的過濾&#xff0c;業務中網絡的需求不止局限于能夠連同。 一、過略工具 你的公司當中有研發部門&#xff0c;包括有財務部門&#xff0c;財務部門的訪問是要做到控制的&#xff0c;防止被攻擊。 這種的過濾方法為&#xff0c;在設備側可以基于訪問需求來…

解決IntelliJ IDEA連接MySQL時“Public Key Retrieval is not Allowed”問題

前言 在使用IntelliJ IDEA開發環境中連接MySQL數據庫時&#xff0c;可能會遇到“Public Key Retrieval is not allowed”這樣的錯誤提示&#xff0c;即使輸入的用戶名和密碼完全正確。本文將指導你如何解決這一問題&#xff0c;確保順利建立數據庫連接。 錯誤背景 這一問題通…

AI算力發展現狀與趨勢分析

綜合算力發展現狀與趨勢分析 在數字經濟的疾速推動下&#xff0c;綜合算力作為驅動各類應用和服務的新型生產力&#xff0c;其價值日益凸顯。我們深入探討了綜合算力的定義、重要性以及當前發展狀況&#xff1b;并從算力形態、運力性能和存儲技術等角度&#xff0c;預見了其發展…

基于Java技術的校友社交系統

你好呀&#xff0c;我是計算機學姐碼農小野&#xff01;如果你對校友社交系統感興趣或者有相關需求&#xff0c;可以私信聯系我。 開發語言 Java 數據庫 MySQL 技術 Java技術SpringBoot框架 工具 IDEA/Eclipse、Navicat、Maven 系統展示 首頁 校友會信息界面 校友活動…

Sqli-labs 3

1.按照路徑http://localhost/sqli-labs/sqli-labs-master/Less-3/進入 2.判斷注入類型----字符型 Payload&#xff1a;?id1’) and 11-- 注&#xff1a;根據報錯提示的語法錯誤&#xff0c;在第一行中使用接近’union select 1,2,3--’)的正確語法 3.判斷注入點&#xff1a;…

【Linux】vim詳解

1.什么是vi/vim? 簡單來說&#xff0c;vi是老式的文本編輯器&#xff0c;不過功能已經很齊全了&#xff0c;但是還是有可以進步的地方。vim則可以說是程序開發者的一項很好用的工具&#xff0c;就連 vim的官方網站&#xff08; http://www.vim.org&#xff09;自己也說vim是一…

如何計算卷積層輸出圖像的大小以及池化大小輸出

如何計算卷積層輸出圖像的大小&以及池化大小輸出 卷積 在卷積神經網絡&#xff08;CNN&#xff09;中&#xff0c;計算卷積層輸出圖像的大小是一個常見的操作。以下是卷積計算的基本公式和步驟&#xff1a; 卷積層輸出尺寸計算公式&#xff1a; Output_size ? Input_s…

區塊鏈項目全球成功指南:全面覆蓋的媒體宣發策略與實踐

隨著區塊鏈技術的迅速普及和發展&#xff0c;全球范圍內對區塊鏈項目的關注度不斷提升。為了在國際市場上取得成功&#xff0c;區塊鏈項目需要通過有效的媒體宣傳策略來提高知名度&#xff0c;吸引投資&#xff0c;并建立強大的社區支持。本文將詳細介紹區塊鏈項目在海外媒體宣…

為企業提升銷售工作效率的工作手機管理系統

在競爭日益激烈的市場環境中&#xff0c;企業的銷售團隊如同前線戰士&#xff0c;其作戰效率直接關乎企業的生存與發展。然而&#xff0c;傳統銷售管理模式下的信息孤島、溝通不暢、數據混亂等問題&#xff0c;正悄然成為制約銷售效率提升的瓶頸。今天&#xff0c;我們為您揭秘…

在 Windows 平臺搭建 MQTT 服務

引言 MQTT 是一種輕量級、基于發布/訂閱模式的消息傳輸協議&#xff0c;旨在用極小的代碼空間和網絡帶寬為物聯網設備提供簡單、可靠的消息傳遞服務。MQTT 經過多年的發展&#xff0c;如今已被廣泛應用于資源開采、工業制造、移動通信、智能汽車等各行各業&#xff0c;使得 MQ…

匯聚榮做拼多多電商怎么樣?

匯聚榮做拼多多電商怎么樣?在當前電商平臺競爭激烈的背景下&#xff0c;拼多多憑借其獨特的商業模式和市場定位迅速崛起。對于想要加入拼多多的商家而言&#xff0c;了解平臺的特點、優勢及挑戰是至關重要的。本文將深入分析加入拼多多電商的多個方面&#xff0c;幫助讀者全面…

ubuntu計劃任務反彈

目錄 實驗環境 實驗步驟 目標主機構造任務計劃 構造語句 語句解釋 kali開啟監聽 監聽成功 問題 原因 實驗環境 攻擊者 操作系統&#xff1a;kali IP&#xff1a;192.168.244.141 目標主機 操作系統&#xff1a;ubuntu IP&#xff1a;192.168.244.151 實驗步驟 目…

論文學習_An Empirical Study of Deep Learning Models for Vulnerability Detection

1. 引言 研究背景:近年來,深度學習漏洞檢測工具取得了可喜的成果。最先進的模型報告了 0.9 的 F1 分數,并且優于靜態分析器。結果令人興奮,因為深度學習可能會給軟件保障帶來革命性的變化。因此,IBM、谷歌和亞馬遜等行業公司非常感興趣,并投入巨資開發此類工具和數據集。…