Heim > Web-Frontend > View.js > Hauptteil

Implementierung und Kapselung asynchroner Anfragen in Vue

WBOY
Freigeben: 2023-10-15 09:41:01
Original
1382 Leute haben es durchsucht

Implementierung und Kapselung asynchroner Anfragen in Vue

Implementierung und Kapselung asynchroner Anforderungen in Vue

In der Entwicklung ist es häufig erforderlich, asynchrone Anforderungen an den Back-End-Server zu stellen, um Daten abzurufen oder Daten zu übermitteln. Vue bietet eine einfache und leistungsstarke Möglichkeit, asynchrone Anforderungen zu verarbeiten, dh die Axios-Bibliothek zur Kapselung zu verwenden.

1. Implementierung asynchroner Anfragen
Im Vue-Projekt können asynchrone Anfragen durch die Verwendung von Axios in den Methoden der Komponente implementiert werden. Das Folgende ist ein Beispiel für das Abrufen von Benutzerinformationen:

  1. Zuerst müssen Sie die Axios-Bibliothek in das Projekt einführen. Sie können sie über npm installieren oder direkt in die Seite einführen:

    import axios from 'axios'
    Nach dem Login kopieren
  2. In den Methoden der Komponente, asynchron schreiben Angeforderter Code:

    methods: {
      getUserInfo() {
     axios.get('/api/user').then(response => {
       // 请求成功后的处理逻辑
       console.log(response.data)
     }).catch(error => {
       // 请求失败后的处理逻辑
       console.error(error)
     })
      }
    }
    Nach dem Login kopieren
  3. Rufen Sie die getUserInfo-Methode auf, wenn der Lebenszyklus oder das Ereignis der Komponente ausgelöst wird:

    created() {
      this.getUserInfo()
    }
    Nach dem Login kopieren

Verwenden Sie im obigen Code die get-Methode von axios, um eine GET-Anfrage zu senden. Die Anforderungsadresse lautet /api/user. Nachdem die Anforderung erfolgreich war, übergeben Sie die Methode, um die zurückgegebenen Daten zu erhalten. Wenn die Anforderung fehlschlägt, werden die Fehlerinformationen über die Catch-Methode erfasst.

2. Kapselung asynchroner Anfragen
Um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern, können asynchrone Anfragen in ein unabhängiges Modul zur Verwendung durch mehrere Komponenten gekapselt werden.

  1. Erstellen Sie zunächst eine api.js-Datei, um alle asynchronen Anforderungsmethoden zu kapseln:

    import axios from 'axios'
    
    export function getUserInfo() {
      return axios.get('/api/user')
    }
    Nach dem Login kopieren
  2. Fügen Sie api.js in die Komponente ein und rufen Sie die entsprechende Methode auf:

    import { getUserInfo } from './api.js'
    
    methods: {
      getUser() {
     getUserInfo().then(response => {
       console.log(response.data)
     }).catch(error => {
       console.error(error)
     })
      }
    }
    Nach dem Login kopieren

Durch Hinzufügen werden alle asynchronen Anforderungsmethoden gekapselt in api.js, und diese Methoden können direkt aufgerufen werden, um Daten abzurufen, sodass nicht wiederholt derselbe Code in jede Komponente geschrieben werden muss.

3. Verwenden Sie den Axios-Interceptor. Bei asynchronen Anforderungen ist es häufig erforderlich, vor dem Senden der Anforderung oder nach der Rückgabe der Antwort eine allgemeine Verarbeitung durchzuführen, z. B. das Hinzufügen von Anforderungsheadern, das Ändern von Anforderungsparametern und die einheitliche Behandlung von Fehlern. Zu diesem Zeitpunkt können Sie den Axios-Interceptor verwenden, um dies zu erreichen.

  1. Fügen Sie in api.js den folgenden Code hinzu:

    // 添加请求拦截器,设置请求头
    axios.interceptors.request.use(
      config => {
     config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token')
     return config
      },
      error => {
     return Promise.reject(error)
      }
    )
    
    // 添加响应拦截器,统一处理错误
    axios.interceptors.response.use(
      response => {
     return response
      },
      error => {
     console.error(error)
     return Promise.reject(error)
      }
    )
    Nach dem Login kopieren

Durch Hinzufügen eines Interceptors können Sie den Anforderungsheader festlegen, bevor die Anforderung gesendet wird, und Fehler nach der Rückgabe der Antwort einheitlich behandeln.

  1. Ändern Sie die getUserInfo-Methode so, dass sie den Anforderungen des Interceptors entspricht:

    export function getUserInfo() {
      return axios.get('/api/user').then(response => {
     return response.data
      }).catch(error => {
     console.error(error)
     return Promise.reject(error)
      })
    }
    Nach dem Login kopieren
Übergeben Sie das zurückgegebene Promise-Objekt an den Interceptor, indem Sie .then und .catch in der getUserInfo-Methode verwenden.

Durch die oben genannten Schritte wird die Kapselung und Implementierung asynchroner Anforderungen in Vue realisiert. Durch die Kapselung wird der asynchrone Anforderungscode prägnanter, einheitlicher und wartbarer und verbessert außerdem die Wiederverwendbarkeit des Codes. Gleichzeitig können durch den Einsatz von Interceptoren problemlos Anforderungsänderungen und Fehlerbehandlungen durchgeführt werden, bevor die Anforderung gesendet und die Antwort zurückgegeben wird.

Das obige ist der detaillierte Inhalt vonImplementierung und Kapselung asynchroner Anfragen in Vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!