Axios は、サーバーへの HTTP リクエストの送信を容易にする、広く使用されている JavaScript ライブラリです。その際立った機能の 1 つはインターセプターです。これにより、アプリはリクエストとレスポンスをキャッチできるようになります。 Axios インターセプターを使用すると、リクエストまたはレスポンスがアプリケーションに到達する前に、リクエストまたはレスポンスごとに実行される関数をセットアップできます。これは、認証トークンの追加、ログ記録、グローバルなエラー処理などのタスクに役立ち、コードがクリーンになり、管理が容易になります。
このブログ投稿では、Next.js アプリケーションに Axios リクエスト インターセプターを実装する方法を学びます。まず Axios をセットアップし、次にリクエストとレスポンスのインターセプターを作成して使用する方法を見ていきます。最後には、インターセプターを使用してアプリケーションを改善し、コードを整理する方法を理解できるようになります。
Next.js アプリケーションに Axios リクエスト インターセプターを実装する方法に入る前に、次のものが揃っていることを確認してください。
Node.js と npm/yarn がインストールされています: Node.js と npm (または Yarn) がマシンにインストールされていることを確認します。ここから Node.js をダウンロードできます。
Next.js プロジェクトのセットアップ: Next.js プロジェクトのセットアップが必要です。お持ちでない場合は、「Create Next App」を使用して新しい Next.js プロジェクトを作成できます:
リーリー
リーリー
私たちが行ったことの概要は次のとおりです:
ステップ 3: インターセプターのカスタマイズ
必要に応じて他のアクションを実行するようにリクエスト インターセプターをカスタマイズできます。たとえば、各リクエストの詳細をログに記録したい場合があります:
リーリーNext.js アプリケーションにリクエスト インターセプターを実装すると、すべてのリクエストが送信される前に一貫して変更または拡張されるようになり、コードの保守性と機能性が向上します。
レスポンスインターセプタの実装リクエスト インターセプターを使用して発信リクエストを変更できるのと同様に、Axios のレスポンス インターセプターを使用すると、レスポンスがアプリケーション コードに到達する前にグローバルにレスポンスを管理できます。これは、エラー処理、応答変換、ロギングなどのタスクに特に役立ちます。 Axios を使用して Next.js アプリケーションにレスポンス インターセプターを実装する方法を見てみましょう。
ステップ 1: 応答インターセプターを作成する
// 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 (); }Data from API
{data ? ({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.
在這篇文章中,我們探索了在 Next.js 應用程式中使用 Axios 攔截請求的強大概念。這使得開發人員能夠更好地控制應用程式中的 HTTP 請求和回應。無論是添加身份驗證令牌、記錄用於偵錯目的的請求,還是全域處理錯誤,Axios 攔截器都提供了靈活的解決方案來滿足多樣化的開發需求。
如果您喜歡這個博客,請查看我們的其他博客如何在 React 中實現 Axios 攔截器
以上がNext.js で Axios リクエスト インターセプターを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。