Rumah >hujung hadapan web >tutorial js >Bagaimana untuk melaksanakan Axios Request Interceptors dalam Next.js

Bagaimana untuk melaksanakan Axios Request Interceptors dalam Next.js

PHPz
PHPzasal
2024-08-12 20:30:34944semak imbas

Axios ialah perpustakaan JavaScript yang digunakan secara meluas yang memudahkan untuk menghantar permintaan HTTP ke pelayan. Salah satu ciri yang menonjol ialah pemintas, yang membolehkan apl kami menangkap permintaan dan respons. Pemintas Axios membenarkan kami menyediakan fungsi yang dijalankan untuk setiap permintaan atau respons sebelum ia mencapai aplikasi. Ini berguna untuk tugas seperti menambahkan token pengesahan, pengelogan dan pengendalian ralat secara global, menjadikan kod kami lebih bersih dan lebih mudah untuk diurus.

Dalam catatan blog ini, kita akan belajar cara melaksanakan pemintas permintaan Axios dalam aplikasi Next.js. Kami akan mulakan dengan menyediakan Axios, dan kemudian kami akan melihat cara membuat dan menggunakan pemintas permintaan dan tindak balas. Pada akhirnya, anda akan tahu cara menggunakan pemintas untuk menambah baik aplikasi anda dan memastikan kod anda teratur.

Sediakan Projek

Sebelum menyelami cara melaksanakan pemintas permintaan Axios dalam aplikasi Next.js, pastikan anda mempunyai perkara berikut:

  • Node.js dan npm/yarn Dipasang: Pastikan anda memasang Node.js dan npm (atau yarn) pada mesin anda. Anda boleh memuat turun Node.js dari sini.

  • Persediaan Projek Next.js: Anda sepatutnya mempunyai persediaan projek Next.js. Jika anda tidak mempunyainya, anda boleh membuat projek Next.js baharu menggunakan Cipta Apl Seterusnya:

npx create-next-app my-axios-app
cd my-axios-app
npm install axios

atau

yarn add axios

Melaksanakan Pemintas Permintaan

Pemintas permintaan dalam Axios membolehkan anda mengubah suai permintaan sebelum mereka sampai ke pelayan. Ia berguna untuk menambah token pengesahan, menetapkan pengepala tersuai atau permintaan pengelogan. Begini cara untuk melaksanakan pemintas permintaan Axios dalam aplikasi Next.js.

Langkah 1: Buat Contoh Axios

Buat fail baharu axiosInstance.js dalam folder lib (atau mana-mana lokasi pilihan dalam projek anda). Anda boleh menambah pemintas permintaan pada contoh Axios yang anda buat sebelum ini. Pemintas ini akan dilaksanakan sebelum setiap permintaan dihantar.

Mencipta tika Axios membolehkan anda menetapkan konfigurasi lalai, seperti URL asas dan pengepala, yang akan digunakan pada semua permintaan yang dibuat dengan tika itu. Ini membantu dalam memastikan kod anda KERING (Jangan Ulangi Sendiri).

Buat fail baharu bernama axiosInstance.js dalam folder lib anda dan sediakan tika Axios anda:

// 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;

Berikut ialah ringkasan perkara yang telah kami lakukan:

  • Mencipta tika Axios menggunakan axios.create().
  • Tetapkan baseURL kepada URL asas API anda. Anda boleh melaraskan ini supaya sepadan dengan konfigurasi API anda.
  • Digunakan interceptors.request.use() untuk memintas dan mengubah suai permintaan keluar. Ini membolehkan kami menambah pengepala, token pengesahan atau membuat perubahan lain pada konfigurasi permintaan.

Langkah 2: Gunakan Contoh Axios dalam Halaman atau Komponen Next.js

Dengan penyediaan pemintas permintaan, anda boleh menggunakan tika Axios dalam halaman atau komponen Next.js anda seperti biasa. Pemintas akan secara automatik menambah token (atau melakukan sebarang tindakan terkonfigurasi lain) sebelum setiap permintaan dihantar.

// 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...

)}
); }

How to implement Axios Request Interceptors in Next.js

Langkah 3: Menyesuaikan Pemintas

Anda boleh menyesuaikan pemintas permintaan untuk melakukan tindakan lain mengikut keperluan. Sebagai contoh, anda mungkin ingin melog butiran setiap permintaan:

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);
  }
);

Persediaan ini akan log butiran setiap permintaan ke konsol, yang boleh membantu untuk tujuan penyahpepijatan.

How to implement Axios Request Interceptors in Next.js

Dengan melaksanakan pemintas permintaan dalam aplikasi Next.js anda, anda boleh memastikan semua permintaan diubah suai atau dipertingkatkan secara konsisten sebelum ia dihantar, meningkatkan kebolehselenggaraan dan kefungsian kod anda.

Melaksanakan Pemintas Tindak Balas

Sama seperti cara pemintas permintaan membenarkan anda mengubah suai permintaan keluar, pemintas respons dalam Axios membolehkan anda mengurus respons secara global sebelum ia mencapai kod aplikasi anda. Ini amat berguna untuk tugas seperti pengendalian ralat, transformasi tindak balas dan pengelogan. Mari terokai cara melaksanakan pemintas respons dalam aplikasi Next.js menggunakan Axios.

Langkah 1: Cipta Pemintas Respons

Dalam fail axiosInstance.js anda, anda boleh menambah pemintas respons pada tika Axios yang anda buat. Pemintas ini akan dilaksanakan selepas setiap respons diterima.

// 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;

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...

)}
); }

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

Advantages of Using Requestly

Example Use Cases

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.

Kesimpulan

Dalam catatan blog ini, kami telah meneroka konsep berkuasa memintas permintaan dengan Axios dalam aplikasi Next.js. Ini membolehkan pembangun mempunyai lebih kawalan ke atas permintaan dan respons HTTP dalam aplikasi mereka. Sama ada menambah token pengesahan, permintaan pengelogan untuk tujuan penyahpepijatan atau pengendalian ralat secara global, pemintas Axios menyediakan penyelesaian yang fleksibel untuk memenuhi keperluan pembangunan yang pelbagai.

Jika anda menyukai blog ini, lihat blog kami yang lain tentang Cara melaksanakan pemintas Axios dalam React

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan Axios Request Interceptors dalam Next.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

JavaScript css npm angular yarn String if for while require catch Error Logging Token using Interface JS console default dom this location http axios
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Pengurusan Negeri Flutter Dijelaskan: Cara Memilih Pendekatan yang TepatArtikel seterusnya:Pengurusan Negeri Flutter Dijelaskan: Cara Memilih Pendekatan yang Tepat

Artikel berkaitan

Lihat lagi