Heim Web-Frontend Front-End-Fragen und Antworten Was nützt die Vue-Kapselung von Axios?

Was nützt die Vue-Kapselung von Axios?

Dec 19, 2022 pm 05:42 PM
vue axios

Vue-Kapselung von Axios kann die Codequalität verbessern und die Verwendung komfortabler machen. Die API von axios ist sehr benutzerfreundlich und Entwickler können sie problemlos direkt im Projekt verwenden. Mit zunehmender Projektgröße ist es jedoch erforderlich, bei jeder Initiierung einer HTTP-Anfrage Vorgänge wie das Festlegen eines Zeitlimits, das Festlegen von Anforderungsheadern usw. zu schreiben. Fehlerbehandlung usw. . Diese Art der sich wiederholenden Arbeit verschwendet nicht nur Zeit, sondern macht den Code auch überflüssig und schwierig zu warten. Um die Qualität unseres Codes zu verbessern, sollten wir Axios vor der Verwendung zweimal im Projekt kapseln, was die Arbeit erleichtern kann verwenden.

Was nützt die Vue-Kapselung von Axios?

Die Betriebsumgebung dieses Tutorials: Windows7-System, Vue3-Version, DELL G3-Computer. Axios Was ist Axios? Seit Vue2.0 hat Youda angekündigt, die offizielle Empfehlung von vue-resource abzubrechen und stattdessen axios zu empfehlen. Mittlerweile ist Axios für die meisten Vue-Entwickler zur ersten Wahl geworden.

Mit zunehmendem Umfang des Projekts werden jedoch bei jeder Initiierung einer HTTP-Anfrage diese Vorgänge wie das Festlegen des Zeitlimits, das Festlegen des Anforderungsheaders, das Bestimmen der zu verwendenden Anforderungsadresse basierend auf der Projektumgebung, die Fehlerbehandlung usw. , alles muss geschrieben werden Diese Art der Doppelarbeit verschwendet nicht nur Zeit, sondern macht den Code auch überflüssig und schwierig zu warten. Um die Qualität unseres Codes zu verbessern, sollten wir Axios zweimal im Projekt kapseln und dann verwenden Zum Beispiel:

axios('http://localhost:3000/data', {
  // 配置代码
  method: 'GET',
  timeout: 1000,
  withCredentials: true,
  headers: {
    'Content-Type': 'application/json',
    Authorization: 'xxx',
  },
  transformRequest: [function (data, headers) {
    return data;
  }],
  // 其他请求配置...}).then((data) => {
  // todo: 真正业务逻辑代码
  console.log(data);}, (err) => {
  // 错误处理代码  
  if (err.response.status === 401) {
  // handle authorization error
  }
  if (err.response.status === 403) {
  // handle server forbidden error
  }
  // 其他错误处理.....
  console.log(err);});
Nach dem Login kopieren

Wenn jede Seite ähnliche Anfragen sendet, muss einfach viel Konfiguration und Fehlerbehandlung geschrieben werden Es scheint zu umständlich

Zu diesem Zeitpunkt müssen wir Axios neu kapseln, um die Verwendung komfortabler zu machen

So kapseln Sie

Während der Kapselung müssen Sie einige Vereinbarungen mit dem Backend aushandeln, Header anfordern und Statuscodes angeben , Anforderungs-Timeout ... Schnittstellen-Anforderungspräfix festlegen: Abhängig von der Entwicklungs-, Test- und Produktionsumgebung müssen die Präfixe unterschieden werden

Anforderungsheader: Um bestimmte Dienste zu implementieren, müssen einige Parameter übertragen werden. Nur dann können Anforderungen ausgeführt werden gemacht werden (zum Beispiel: Mitgliedschaftsgeschäft)

Statuscode: Abhängig vom unterschiedlichen Status, der von der Schnittstelle zurückgegeben wird, können unterschiedliche Dienste ausgeführt werden. Dies muss mit dem Backend vereinbart werden.

Anforderungsmethode: Führen Sie eine Neukapselung basierend auf durch Get-, Post- und andere Methoden sind bequemer zu verwenden.

Request-Interceptor: Bestimmen Sie, auf welche Anforderungen gemäß den Einstellungen des Anforderungsheaders zugegriffen werden kann.

Response-Interceptor: Dieser Block basiert auf dem vom Backend zurückgegebenen Statuscode, um zu bestimmen Ausführung verschiedener Dienste

Legen Sie das Schnittstellenanforderungspräfix fest

Verwenden Sie Knotenumgebungsvariablen, um Entscheidungen zur Unterscheidung von Entwicklungs-, Test- und Produktionsumgebungen zu treffen

if (process.env.NODE_ENV === 'development') {
  axios.defaults.baseURL = 'http://dev.xxx.com'
} else if (process.env.NODE_ENV === 'production') {
  axios.defaults.baseURL = 'http://prod.xxx.com'
}
Nach dem Login kopieren
Beim lokalen Debuggen müssen Sie auch devServer in der vue.config konfigurieren. js-Datei zum Implementieren einer domänenübergreifenden

devServer: {
    proxy: {
      '/proxyApi': {
        target: 'http://dev.xxx.com',
        changeOrigin: true,
        pathRewrite: {
          '/proxyApi': ''
        }
      }
    }
  }
Nach dem Login kopieren

Anforderungsheader und Timeout-Zeit festlegen

In den meisten Fällen sind die Anforderungsheader festgelegt. Hier sind einige spezielle Anforderungsheader erforderlich Der Universal Requests Header als Basiskonfiguration. Wenn ein spezieller Anforderungsheader erforderlich ist, übergeben Sie den speziellen Anforderungsheader als Parameter, um die Grundkonfiguration zu überschreiben aufzurufen und verfügbar zu machen

const service = axios.create({
    ...
    timeout: 30000,  // 请求 30s 超时
	  headers: {
        get: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
          // 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
        },
        post: {
          'Content-Type': 'application/json;charset=utf-8'
          // 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
        }
  },
})
Nach dem Login kopieren

Fügen Sie die gekapselte Methode in eine api.js-Datei ein

// get 请求
export function httpGet({
  url,
  params = {}
}) {
  return new Promise((resolve, reject) => {
    axios.get(url, {
      params
    }).then((res) => {
      resolve(res.data)
    }).catch(err => {
      reject(err)
    })
  })
}

// post
// post请求
export function httpPost({
  url,
  data = {},
  params = {}
}) {
  return new Promise((resolve, reject) => {
    axios({
      url,
      method: 'post',
      transformRequest: [function (data) {
        let ret = ''
        for (let it in data) {
          ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
        }
        return ret
      }],
      // 发送的数据
      data,
      // url参数
      params

    }).then(res => {
      resolve(res.data)
    })
  })
}
Nach dem Login kopieren

Sie können sie direkt auf der Seite aufrufen

import { httpGet, httpPost } from './http'
export const getorglist = (params = {}) => httpGet({ url: 'apps/api/org/list', params })
Nach dem Login kopieren

Auf diese Weise kann die API in Zukunft einheitlich verwaltet und geändert werden Muss nur in der api.js-Datei durchgeführt werden

Request Interceptor

Request Interceptor kann jeder Anfrage ein Token hinzufügen und ist nach der einheitlichen Verarbeitung einfach zu warten

// .vue
import { getorglist } from '@/assets/js/api'

getorglist({ id: 200 }).then(res => {
  console.log(res)
})
Nach dem Login kopieren

Response interceptor

Response interceptor kann Führen Sie nach Erhalt der Antwort eine Schicht aus, z. B. die Beurteilung des Anmeldestatus und der Autorisierung anhand des Statuscodes.

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 每次发送请求之前判断是否存在token
    // 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况,此处token一般是用户完成登录后储存到localstorage里的
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.error(error)
  })
Nach dem Login kopieren

Zusammenfassung

Die einfache Kapselung von Axios ermöglicht es uns, ihren Charme zu schätzen Niemand Absoluter Standard, solange Ihr Paket Ihre Projektanforderungen erfüllt und einfach zu verwenden ist, ist es eine gute Paketlösung

[Verwandte Empfehlungen:

vuejs-Video-Tutorial

,

Web-Front-End-Entwicklung

]

Das obige ist der detaillierte Inhalt vonWas nützt die Vue-Kapselung von Axios?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

Was bedeutet VUE Multi-Page-Entwicklung? Was bedeutet VUE Multi-Page-Entwicklung? Apr 07, 2025 pm 11:57 PM

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

So verwenden Sie Vue Traversal So verwenden Sie Vue Traversal Apr 07, 2025 pm 11:48 PM

Es gibt drei gängige Methoden für Vue.js, um Arrays und Objekte zu durchqueren: Die V-für-Anweisung wird verwendet, um jedes Element zu durchqueren und Vorlagen zu rendern; Die V-Bind-Anweisung kann mit V-für dynamisch Attributwerte für jedes Element verwendet werden. und die .MAP -Methode kann Array -Elemente in Neuarrays umwandeln.

Wie man einen Tag zum Vue springt Wie man einen Tag zum Vue springt Apr 08, 2025 am 09:24 AM

Zu den Methoden zum Implementieren des Sprung eines Tags in VUE gehören: Verwenden des A -Tags in der HTML -Vorlage, um das HREF -Attribut anzugeben. Verwenden Sie die Router-Link-Komponente des Vue-Routings. Verwenden Sie dies. $ Router.push () Methode in JavaScript. Parameter können durch den Abfrageparameter weitergeleitet werden, und Routen sind in den Routeroptionen für dynamische Sprünge konfiguriert.

See all articles