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

axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)

這篇具有很好參考價(jià)值的文章主要介紹了axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)

??前言

在之前的文章 axios 實(shí)戰(zhàn)進(jìn)階練習(xí)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái) 中,我們完成了這個(gè)基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的項(xiàng)目,其中項(xiàng)目的后端接口是用 Node.js 編寫的,通過 axios 來獲取接口,所以這篇文章我們來對(duì)這個(gè) axios 進(jìn)一步的封裝。
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)


??為什么要封裝 axios ?

這是前端開發(fā)中非常經(jīng)典一個(gè)操作,同時(shí)也是一個(gè)面試會(huì)被問道的技術(shù)點(diǎn),接下來我們從以下幾個(gè)原因來看看為什么要封裝 axios。

  • 代碼復(fù)用和可維護(hù)性:通過封裝 axios ,可以將重復(fù)的HTTP請(qǐng)求邏輯進(jìn)行抽象和封裝,提高代碼的復(fù)用性,避免在多個(gè)地方編寫相同的請(qǐng)求代碼。同時(shí),封裝后的 axios 實(shí)例也更易于維護(hù)和管理。
  • 統(tǒng)一的請(qǐng)求處理:封裝 axios 可以實(shí)現(xiàn)對(duì)請(qǐng)求的統(tǒng)一處理。例如,可以在請(qǐng)求之前添加通用的請(qǐng)求頭部、設(shè)置默認(rèn)配置、統(tǒng)一處理錯(cuò)誤等。這樣可以減少重復(fù)的代碼,并且確保所有請(qǐng)求都遵循相同的規(guī)范和處理邏輯。
  • 接口管理和版本控制:通過封裝 axios ,可以將各個(gè)API接口進(jìn)行集中管理,方便統(tǒng)一修改和維護(hù)。同時(shí),可以通過封裝實(shí)現(xiàn)接口版本控制,確保不同版本的接口請(qǐng)求正確對(duì)應(yīng)相應(yīng)的版本。
  • 攔截器的使用axios 提供了攔截器 (interceptors) 功能,可以在請(qǐng)求發(fā)送和響應(yīng)返回時(shí)進(jìn)行攔截和處理。通過封裝axios,可以更方便地利用攔截器來實(shí)現(xiàn)請(qǐng)求和響應(yīng)的統(tǒng)一處理、認(rèn)證和授權(quán)、錯(cuò)誤處理等操作。
  • 更好的擴(kuò)展性和適應(yīng)性:封裝 axios 可以提供更好的擴(kuò)展性和適應(yīng)性。例如,可以根據(jù)業(yè)務(wù)需求,自定義一些通用的請(qǐng)求方法或攔截器,以滿足特定的業(yè)務(wù)場(chǎng)景。

??如何封裝 axios ?

上面也大致說了關(guān)于封裝 axios 的一些必要性,接下來舉一個(gè)封裝的例子。

創(chuàng)建一個(gè) axios 實(shí)例:首先,我們需要?jiǎng)?chuàng)建一個(gè) axios 實(shí)例,并設(shè)置一些默認(rèn)的配置。這樣可以為后續(xù)的請(qǐng)求提供統(tǒng)一的配置。

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com', // 設(shè)置請(qǐng)求的基礎(chǔ)URL
  timeout: 5000, // 設(shè)置請(qǐng)求超時(shí)時(shí)間
  headers: {
    'Content-Type': 'application/json' // 設(shè)置請(qǐng)求頭部
  }
});

export default instance;

定義請(qǐng)求方法:根據(jù)項(xiàng)目需求,可以定義不同的請(qǐng)求方法 (例如GET、POST等),并配置相應(yīng)的攔截器和處理邏輯。

import axiosInstance from './axiosInstance';

// GET請(qǐng)求示例
export function get(url, params) {
  return axiosInstance.get(url, { params })
    .then(response => {
      // 請(qǐng)求成功處理邏輯
      return response.data;
    })
    .catch(error => {
      // 請(qǐng)求失敗處理邏輯
      throw error;
    });
}

// POST請(qǐng)求示例
export function post(url, data) {
  return axiosInstance.post(url, data)
    .then(response => {
      // 請(qǐng)求成功處理邏輯
      return response.data;
    })
    .catch(error => {
      // 請(qǐng)求失敗處理邏輯
      throw error;
    });
}

// 其他請(qǐng)求方法類似

使用封裝的請(qǐng)求方法:在項(xiàng)目中使用封裝的請(qǐng)求方法,發(fā)送具體的請(qǐng)求。

import { get, post } from './api';

// 發(fā)送GET請(qǐng)求
get('/users', { id: 1 })
  .then(data => {
    // 請(qǐng)求成功處理邏輯
    console.log(data);
  })
  .catch(error => {
    // 請(qǐng)求失敗處理邏輯
    console.error(error);
  });

// 發(fā)送POST請(qǐng)求
post('/login', { username: 'admin', password: '123456' })
  .then(data => {
    // 請(qǐng)求成功處理邏輯
    console.log(data);
  })
  .catch(error => {
    // 請(qǐng)求失敗處理邏輯
    console.error(error);
  });

// 其他請(qǐng)求使用方法類似

??對(duì)項(xiàng)目的 axios 進(jìn)一步封裝

通過上面內(nèi)容,我們也清楚了為什么要封裝 axios 了,同時(shí)也通過簡(jiǎn)單的案例演示,學(xué)習(xí)了如何封裝 axios ,接下來我們對(duì)上一篇文章的聯(lián)系人列表管理后臺(tái)的 axios 進(jìn)行封裝。

首先在 src 文件夾中新建一個(gè)文件夾 service ,并在其中創(chuàng)建一個(gè) contactService.js 文件夾,然后在該文件夾中對(duì) axios 進(jìn)行統(tǒng)一格式封裝,代碼如下。
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)

export default {
  //添加聯(lián)系人
  insert: {
    method: "post",
    url: "insert",
  },
  //刪除聯(lián)系人
  delete: {
    method: "delete",
    url: "delete",
  },
  //修改聯(lián)系人
  update: {
    method: "put",
    url: "update",
  },
  //查詢聯(lián)系人列表
  select: {
    method: "get",
    url: "select",
  },
};

然后在 service 文件夾中繼續(xù)創(chuàng)建一個(gè) http.js 文件,在該文件中對(duì) axiosservice/contactService.js 進(jìn)行引用,代碼如下。

import axios from "axios";
import service from "./contactService";
import { ElLoading, ElMessage } from "element-plus";
var loading = {
  _load: null,
  show() {
    this._load = ElLoading.service({
      text: "loading...",
    });
  },
  hide() {
    this._load.close();
  },
};

// axios默認(rèn)數(shù)據(jù)
let instance = axios.create({
  baseURL: "http://127.0.0.1:9999/api/",
  timeout: 10000,
});

const Http = {};
for (let key in service) {
  let api = service[key];
  Http[key] = async function (params, isForData = false, config = {}) {
    let newParams = {};
    let response = {};
    if (params && isForData) {
      for (let i in params) {
        newParams.append(i, params[i]);
      }
    } else {
      newParams = params;
    }
    switch (api.method) {
      case "put":
      case "post":
      case "patch":
        try {
          response = await instance[api.method](api.url, newParams, config);
        } catch (err) {
          response = err;
        }
        break;
      case "get":
      case "delete":
        config.params = newParams;
        try {
          response = await instance[api.method](api.url, newParams, config);
        } catch (err) {
          response = err;
        }
        break;
    }
    return response;
  };
}

// 攔截器的添加
// 請(qǐng)求攔截器
instance.interceptors.request.use(
  (config) => {
    // 請(qǐng)求中的加載提示
    loading.show();
    return config;
  },
  (err) => {
    // 請(qǐng)求錯(cuò)誤
    loading.hide();
    ElMessage.error(JSON.stringify(err) + "請(qǐng)求錯(cuò)誤");
  }
);
// 響應(yīng)式攔截器
instance.interceptors.response.use(
  (res) => {
    // 響應(yīng)成功
    loading.hide();
    return res.data;
  },
  (err) => {
    // 響應(yīng)錯(cuò)誤
    loading.hide();
    ElMessage.error(JSON.stringify(err) + "響應(yīng)錯(cuò)誤");
  }
);
export default Http;

這里局部調(diào)用 Http ,找到項(xiàng)目中有用到原生調(diào)用 axios 的地方通過 import Http from "@/service/http"; 引入 Http
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)
比如說,項(xiàng)目中的 refreshList() 方法,我們需要這個(gè)方法獲取到聯(lián)系人列表的數(shù)據(jù),我們把原生的 axios 方法注釋掉,然后通過 用封裝的 Http 來重新實(shí)現(xiàn)這個(gè)方法,具體操作如下。
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)
修改后的方法如下。
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)

const refreshList = async () => {
  let res = await Http.select();
  contactList.list = res.data.data;
  console.log(contactList.list);
};

然后我們可以看到頁面的數(shù)據(jù)同樣渲染出來了,而且控制臺(tái)也輸出了 contactList.list 的內(nèi)容。
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)
采用封裝后的 axios 來讀取聯(lián)系人列表顯得特別精干、簡(jiǎn)練,除此之外我們也可以通過相同的方法對(duì)添加、刪除、修改聯(lián)系人的請(qǐng)求方法進(jìn)行改造。還有一點(diǎn)要注意的是,在項(xiàng)目不是非常龐大的情況下,還是要慎用 asyncawait 的異步方法,因?yàn)轭}目可能會(huì)導(dǎo)致連同調(diào)用它們的方法體也做異步處理。


??最后

到此,就是文章的全部?jī)?nèi)容了,通過這篇文章,我們了解學(xué)習(xí)了如何封裝 axios ,以及通過簡(jiǎn)單的案例了解封裝的步驟和方法,最后通過對(duì)項(xiàng)目 (基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái))axios 進(jìn)行封裝實(shí)戰(zhàn),加深了封裝 axios 的操作和方法。
axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)
文章來源地址http://www.zghlxwxcb.cn/news/detail-514755.html

到了這里,關(guān)于axios 實(shí)戰(zhàn)進(jìn)階練習(xí)( axios 封裝篇)——基于 Vue3 + Node.js + ElementPlus 實(shí)現(xiàn)的聯(lián)系人列表管理后臺(tái)的 axios 封裝實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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)文章

  • Vue3和TypeScript下基于Axios的二次封裝教程

    Vue3和TypeScript下基于Axios的二次封裝教程

    學(xué)習(xí)如何在Vue3項(xiàng)目中使用TypeScript和Axios進(jìn)行二次封裝,實(shí)現(xiàn)更靈活的網(wǎng)絡(luò)請(qǐng)求處理。詳細(xì)教程包括攔截器設(shè)置和類型擴(kuò)展。

    2024年02月05日
    瀏覽(584)
  • 基于Vue、Axios、Node.js的圖書管理系統(tǒng)【網(wǎng)頁前端高級(jí)編程】

    基于Vue、Axios、Node.js的圖書管理系統(tǒng)【網(wǎng)頁前端高級(jí)編程】

    本圖書管理系統(tǒng)是基于Vue、Ajax、Node.js等技術(shù)的管理系統(tǒng),筆者給其命名為陽光圖書管理系統(tǒng),意味著我們這個(gè)年紀(jì)應(yīng)該活得灑脫像陽光一樣,應(yīng)充滿活力與信心。再此感謝老師朋友的悉心指導(dǎo),由于此系統(tǒng)是筆者初次完成的一個(gè)小型管理系統(tǒng),必定有許多紕漏,如有不足請(qǐng)指正。

    2024年02月09日
    瀏覽(98)
  • vue3【使用axios并封裝axios請(qǐng)求】

    vue3【使用axios并封裝axios請(qǐng)求】

    第一步:安裝axios 第二步:編寫請(qǐng)求文件 新建request.js 簡(jiǎn)單的axios封裝,里面相關(guān)提示信息,自己可以引入element-plus去添加

    2024年02月04日
    瀏覽(88)
  • axios封裝—vue3項(xiàng)目

    前言 axios的API很友好,可以在項(xiàng)目中直接使用。但是在大型項(xiàng)目中,http請(qǐng)求很多,且需要區(qū)分環(huán)境, 每個(gè)網(wǎng)絡(luò)請(qǐng)求有相似需要處理的部分,會(huì)導(dǎo)致代碼冗余,破壞工程的可維護(hù)性,擴(kuò)展性,所以需要對(duì)axios請(qǐng)求進(jìn)行相應(yīng)的封裝 正文 安裝axios 封裝請(qǐng)求api 1. 在src目錄下新建個(gè)

    2024年02月07日
    瀏覽(391)
  • Vue3+Axios網(wǎng)絡(luò)請(qǐng)求封裝

    本文將詳細(xì)介紹一款基于Axios+Typescript封裝的網(wǎng)絡(luò)請(qǐng)求庫,該庫可以自動(dòng)攜帶token、攔截請(qǐng)求和響應(yīng)等操作,并能夠處理請(qǐng)求重復(fù)、超時(shí)和錯(cuò)誤狀態(tài)碼等異常情況。 Axios 是基于Node.js的HTTP客戶端,也是一款廣泛使用的網(wǎng)絡(luò)請(qǐng)求庫。它具有使用簡(jiǎn)單、可擴(kuò)展性高、易用性好等特點(diǎn)

    2024年02月07日
    瀏覽(90)
  • vue3中axios整體封裝

    vue3中axios整體封裝

    在 vue3.x 版本中進(jìn)行封裝 使用 promise 封裝 post 和 get 方法 api 作為單獨(dú)模塊維護(hù) 適配 vue.config.js 中 proxy 代理 結(jié)合 async 和 await 1 安裝 2 創(chuàng)建http模塊 在 src 目錄下,創(chuàng)建 request 文件夾,并在該文件夾下,新建 http.js 文件 3 創(chuàng)建單獨(dú)的api模塊 4 在業(yè)務(wù)代碼中使用 5 在vue.config.js中配

    2024年02月17日
    瀏覽(86)
  • Vue3初學(xué)者詳細(xì)教程之zip安裝Node.js版本v16.6.0、vue/cli版本4.5.13、element-ui版本2.15.6、axios版本0.25.0

    Vue3初學(xué)者詳細(xì)教程之zip安裝Node.js版本v16.6.0、vue/cli版本4.5.13、element-ui版本2.15.6、axios版本0.25.0

    《Node.js v16.6.0官網(wǎng)下載》 在node文件夾里面創(chuàng)建2個(gè)文件夾分別是node_cache和node_global 在解壓路徑文件夾cmd輸入以下命令創(chuàng)建2個(gè)文件夾 新建系統(tǒng)變量NODE_HOME 編輯Path系統(tǒng)變量 測(cè)試nodejs環(huán)境變量是否生效 cmd運(yùn)行 node -v 命令,輸出版本號(hào)說明成功 以系統(tǒng)管理員的身份打開cmd命令提

    2024年02月07日
    瀏覽(119)
  • Vue3創(chuàng)建項(xiàng)目(四)axios封裝及接口配置

    Vue3創(chuàng)建項(xiàng)目(四)axios封裝及接口配置

    項(xiàng)目結(jié)構(gòu):? 目錄 ???????index.ts ????????api.ts 看完需要預(yù)計(jì)花費(fèi)10分鐘。 請(qǐng)求攔截器與響應(yīng)攔截器? 閱讀下面代碼需先了解以下內(nèi)容: ? ? ????請(qǐng)求攔截器: ? ? 請(qǐng)求攔截器的作用是在請(qǐng)求發(fā)送前進(jìn)行一些操作,例如在每個(gè)請(qǐng)求體里加上token,每次請(qǐng)求攜帶token傳給

    2024年02月03日
    瀏覽(90)
  • Vue3的axios請(qǐng)求封裝,請(qǐng)求攔截,相應(yīng)攔截

    對(duì)于三者放在Service.js中封裝,方便使用 axios.create ?的作用是創(chuàng)建一個(gè)新的? axios ?實(shí)例,該實(shí)例可以具有自定義配置。通過使用? axios.create ,您可以為任何 API 生成一個(gè)客戶端,并在使用同一客戶端的任何調(diào)用中重復(fù)使用相同的配置。這使得在應(yīng)用程序中使用多個(gè) API 時(shí)更加

    2024年02月03日
    瀏覽(91)
  • vue3+vite的axios的封裝與全局使用

    vue3+vite的axios的封裝與全局使用

    1.安裝axios 使用npm 或 yarn 安裝axios到項(xiàng)目中 // 使用pnpm 安裝? ?pnpm install axios // 使用npm 安裝? ?npm install axios // 使用yarn 安裝? yarn add axios axios是一個(gè)基于Promise的HTTP請(qǐng)求庫,支持Promise API、可以攔截請(qǐng)求和響應(yīng)、可以轉(zhuǎn)換請(qǐng)求和響應(yīng)數(shù)據(jù)、支持取消請(qǐng)求、可以自動(dòng)轉(zhuǎn)換JSON數(shù)據(jù)

    2024年02月02日
    瀏覽(234)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包