Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie Axios Request Interceptors in Next.js

PHPz
Freigeben: 2024-08-12 20:30:34
Original
931 Leute haben es durchsucht

Axios ist eine weit verbreitete JavaScript-Bibliothek, die das Senden von HTTP-Anfragen an Server erleichtert. Eine seiner herausragenden Funktionen ist der Interceptor, der es unserer App ermöglicht, Anfragen und Antworten abzufangen. Mit Axios-Interceptoren können wir Funktionen einrichten, die für jede Anfrage oder Antwort ausgeführt werden, bevor sie die Anwendung erreichen. Dies ist hilfreich für Aufgaben wie das Hinzufügen von Authentifizierungstokens, die Protokollierung und die globale Fehlerbehandlung, wodurch unser Code sauberer und einfacher zu verwalten ist.

In diesem Blogbeitrag erfahren Sie, wie Sie Axios-Request-Interceptors in einer Next.js-Anwendung implementieren. Wir beginnen mit der Einrichtung von Axios und sehen dann, wie man Anfrage- und Antwort-Interceptoren erstellt und verwendet. Am Ende wissen Sie, wie Sie Interceptoren verwenden, um Ihre Anwendung zu verbessern und Ihren Code zu organisieren.

Richten Sie das Projekt ein

Bevor Sie sich mit der Implementierung von Axios-Request-Interceptors in einer Next.js-Anwendung befassen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Node.js und npm/yarn installiert: Stellen Sie sicher, dass Node.js und npm (oder Yarn) auf Ihrem Computer installiert sind. Sie können Node.js hier herunterladen.

  • Ein Next.js-Projekt-Setup: Sie sollten über ein Next.js-Projekt-Setup verfügen. Wenn Sie noch keines haben, können Sie mit „Nächste App erstellen“ ein neues Next.js-Projekt erstellen:

npx create-next-app my-axios-app
cd my-axios-app
npm install axios
Nach dem Login kopieren

oder

yarn add axios
Nach dem Login kopieren

Implementieren von Request Interceptors

Request-Interceptors in Axios ermöglichen es Ihnen, Anfragen zu ändern, bevor sie den Server erreichen. Sie sind nützlich zum Hinzufügen von Authentifizierungstokens, zum Festlegen benutzerdefinierter Header oder zum Protokollieren von Anforderungen. Hier erfahren Sie, wie Sie Axios-Request-Interceptors in einer Next.js-Anwendung implementieren.

Schritt 1: Erstellen Sie eine Axios-Instanz

Erstellen Sie eine neue Datei axiosInstance.js im lib-Ordner (oder an einem beliebigen bevorzugten Speicherort in Ihrem Projekt). Sie können der Axios-Instanz, die Sie zuvor erstellt haben, einen Request-Interceptor hinzufügen. Dieser Interceptor wird ausgeführt, bevor jede Anfrage gesendet wird.

Durch das Erstellen einer Axios-Instanz können Sie Standardkonfigurationen wie die Basis-URL und Header festlegen, die auf alle mit dieser Instanz gestellten Anfragen angewendet werden. Dies hilft dabei, Ihren Code trocken zu halten (Wiederholen Sie sich nicht).

Erstellen Sie eine neue Datei mit dem Namen axiosInstance.js in Ihrem lib-Ordner und richten Sie Ihre Axios-Instanz ein:

// lib/axiosInstance.js
import axios from 'axios';

const axiosInstance = axios.create({
  baseURL: 'https://dummyjson.com', // Replace with your API base URL
  timeout: 1000,
  headers: { 'Content-Type': 'application/json' }
});

// Add a request interceptor
axiosInstance.interceptors.request.use(
  function (config) {
    // Do something before the request is sent
    // For example, add an authentication token to the headers
    const token = localStorage.getItem('authToken'); // Retrieve auth token from localStorage
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  function (error) {
    // Handle the error
    return Promise.reject(error);
  }
);

export default axiosInstance;
Nach dem Login kopieren

Hier ist eine Zusammenfassung dessen, was wir getan haben:

  • Eine Axios-Instanz mit axios.create() erstellt.
  • Setzen Sie die Basis-URL auf die Basis-URL Ihrer API. Sie können dies an die Konfiguration Ihrer API anpassen.
  • Verwendet interceptors.request.use(), um ausgehende Anfragen abzufangen und zu ändern. Dadurch können wir Header und Authentifizierungstoken hinzufügen oder andere Änderungen an der Anforderungskonfiguration vornehmen.

Schritt 2: Verwenden Sie die Axios-Instanz in Next.js-Seiten oder -Komponenten

Wenn der Request-Interceptor eingerichtet ist, können Sie die Axios-Instanz wie gewohnt in Ihren Next.js-Seiten oder -Komponenten verwenden. Der Interceptor fügt das Token automatisch hinzu (oder führt andere konfigurierte Aktionen aus), bevor jede Anfrage gesendet wird.

// pages/index.js
import React, { useEffect, useState } from 'react';
import axiosInstance from '../lib/axiosInstance';

export default function Home() {
  const [data, setData] = useState(null);

  useEffect(() => {
    axiosInstance.get('/products/1') // Replace with your API endpoint
      .then(response => {
        setData(response.data);
      })
      .catch(error => {
        console.error('Error fetching data:', error);
      });
  }, []);

  return (
    <div>
      <h1>Data from API</h1>
      {data ? (
        <pre class="brush:php;toolbar:false">{JSON.stringify(data, null, 2)}
) : (

Loading...

)}
); }
Nach dem Login kopieren

How to implement Axios Request Interceptors in Next.js

Schritt 3: Anpassen des Interceptors

Sie können den Anforderungs-Interceptor anpassen, um bei Bedarf andere Aktionen auszuführen. Beispielsweise möchten Sie möglicherweise die Details jeder Anfrage protokollieren:

axiosInstance.interceptors.request.use(
  function (config) {
    // Log the request details
    console.log('Request:', config);
    return config;
  },
  function (error) {
    // Handle the error
    return Promise.reject(error);
  }
);
Nach dem Login kopieren

Dieses Setup protokolliert die Details jeder Anfrage in der Konsole, was für Debugging-Zwecke hilfreich sein kann.

How to implement Axios Request Interceptors in Next.js

Durch die Implementierung von Anforderungsinterceptoren in Ihrer Next.js-Anwendung können Sie sicherstellen, dass alle Anforderungen vor dem Senden konsistent geändert oder erweitert werden, wodurch die Wartbarkeit und Funktionalität Ihres Codes verbessert wird.

Implementierung von Response Interceptors

Ähnlich wie Request-Interceptors es Ihnen ermöglichen, ausgehende Anfragen zu ändern, ermöglichen Ihnen Response-Interceptors in Axios, Antworten global zu verwalten, bevor sie Ihren Anwendungscode erreichen. Dies ist besonders hilfreich für Aufgaben wie Fehlerbehandlung, Antworttransformation und Protokollierung. Lassen Sie uns untersuchen, wie Sie mithilfe von Axios Antwort-Interceptoren in einer Next.js-Anwendung implementieren.

Schritt 1: Erstellen Sie den Response Interceptor

In Ihrer axiosInstance.js-Datei können Sie der von Ihnen erstellten Axios-Instanz einen Antwort-Interceptor hinzufügen. Dieser Interceptor wird ausgeführt, nachdem jede Antwort empfangen wurde.

// lib/axiosInstance.js
import axios from 'axios';

const axiosInstance = axios.create({
  baseURL: 'https://dummyjson.com', // Replace with your API base URL
  timeout: 1000,
  headers: { 'Content-Type': 'application/json' }
});

// Add a request interceptor
axiosInstance.interceptors.request.use(
  function (config) {
    // Do something before the request is sent
    const token = localStorage.getItem('authToken'); // Retrieve auth token from localStorage
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  function (error) {
    // Handle the error
    return Promise.reject(error);
  }
);

// Add a response interceptor
axiosInstance.interceptors.response.use(
  function (response) {
    // Do something with the response data
    console.log('Response:', response);
    return response;
  },
  function (error) {
    // Handle the response error
    if (error.response && error.response.status === 401) {
      // Handle unauthorized error
      console.error('Unauthorized, logging out...');
      // Perform any logout actions or redirect to login page
    }
    return Promise.reject(error);
  }
);

export default axiosInstance;
Nach dem Login kopieren

Step 2: Use the Axios Instance in Next.js Pages or Components

With the response interceptor set up, you can use the Axios instance in your Next.js pages or components as usual. The interceptor will automatically handle responses and errors based on your configuration.

// pages/index.js
import { useEffect, useState } from 'react';
import axiosInstance from '../lib/axiosInstance';

export default function Home() {
  const [data, setData] = useState(null);

  useEffect(() => {
    axiosInstance.get('/products/1') // Replace with your API endpoint
      .then(response => {
        setData(response.data);
      })
      .catch(error => {
        console.error('Error fetching data:', error);
      });
  }, []);

  return (
    <div>
      <h1>Data from API</h1>
      {data ? (
        <pre class="brush:php;toolbar:false">{JSON.stringify(data, null, 2)}
) : (

Loading...

)}
); }
Nach dem Login kopieren

How to implement Axios Request Interceptors in Next.js

By implementing response interceptors in your Next.js application, you can centralize response handling, improving code maintainability and application robustness. Whether it’s logging, transforming data, or managing errors, response interceptors provide a powerful way to manage HTTP responses efficiently.

Framework-Independent Alternative: Using Requestly

While Axios has powerful tools for processing HTTP requests within applications, integrating and managing interceptors directly within your codebase can be difficult and demand changes to your application’s architecture. Instead of depending on framework-specific solutions such as Axios interceptors, developers can use Requestly, a browser extension that modifies network requests and responses without requiring any changes to the application’s code. This method has various advantages over standard interceptors:

Simplifying Modifications with Requestly

  • No Code Changes Required: Unlike implementing interceptors in your application code, which requires understanding and modifying the codebase, Requestly operates entirely from the browser. This means developers can modify requests and responses dynamically without touching the application’s source code.
  • Flexibility Across Technologies: Requestly’s framework-independent nature allows it to work seamlessly across different projects and technologies. Whether you’re working with React, Angular, Vue.js, or any other framework, Requestly provides a consistent interface for managing network traffic.

Advantages of Using Requestly

  • Ease of Use: Requestly simplifies the process of modifying network requests and responses through an intuitive browser extension interface. This accessibility makes it ideal for developers of all skill levels, from beginners to advanced users.
  • Immediate Testing and Debugging: With Requestly, developers can instantly test and debug different scenarios by altering headers, URLs, or response content. This capability speeds up development cycles and enhances troubleshooting efficiency.
  • Enhanced Privacy and Security: Requestly empowers developers to block or modify requests to enhance privacy, security, and compliance with data protection regulations. For instance, blocking tracking scripts or adding secure headers can be done effortlessly.

Example Use Cases

  • Modify Server Response: Modify response content to simulate various server behaviors without backend changes.
  • Testing Different API Requests: Dynamically alter request to test different API endpoints or data payloads.
  • Blocking Network Request: Test your website under scenarios where certain external resources are unavailable
  • Adding Custom Headers: Add authentication tokens or custom CORS headers for testing APIs that require specific headers. ### How to use Requestly Interceptor

Modify API Response

Requestly allows you to modify API responses. It provides a user-friendly interface for overriding the response body of API requests, allowing you to mimic different data scenarios that your frontend might encounter.

Insert/Inject Script

Insert/Inject Script Rule allows you to inject JavaScript and CSS into web pages as they load. This means you can modify the DOM, change styles, or even add new functionality without altering the source code directly. It’s important for testing hypotheses or debugging during the development and quality assurance process. Learn more about it here.

Replace Rule

Replace Rule enables you to replace a String in URL with another String. This feature is particularly useful for developers to swap the API endpoints from one environment to another or change something specific in the URL. Requests are matched with source condition, and find and replace are performed on those requests by redirecting to the resulting URL. Learn more about this rule here.

Abschluss

In diesem Blogbeitrag haben wir das leistungsstarke Konzept des Abfangens von Anfragen mit Axios in einer Next.js-Anwendung untersucht. Dies ermöglicht Entwicklern eine bessere Kontrolle über HTTP-Anfragen und -Antworten in ihren Anwendungen. Ganz gleich, ob es darum geht, Authentifizierungstoken hinzuzufügen, Anfragen zu Debugging-Zwecken zu protokollieren oder Fehler global zu behandeln, Axios-Interceptors bieten eine flexible Lösung, um unterschiedlichen Entwicklungsanforderungen gerecht zu werden.

Wenn Ihnen dieser Blog gefällt, schauen Sie sich unseren anderen Blog zur Implementierung des Axios-Interceptors in React an

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Axios Request Interceptors in Next.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Vorheriger Artikel:Flutter State Management erklärt: So wählen Sie den richtigen Ansatz Nächster Artikel:Clean Code verstehen: Aussagekräftige Namen ⚡
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
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage