Rumah >hujung hadapan web >tutorial js >Bagaimana untuk melaksanakan Axios Request Interceptors dalam Next.js
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.
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
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.
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:
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...
)}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.
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.
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.
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;
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...
)}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.
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:
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.
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!