How to encapsulate Vue3 Axios interceptor into request file
May 19, 2023 am 11:49 AM1. Create a new file named request.js and import it into Axios:
import axios from 'axios';
2. Create a function named request and export it:
Create a The function is called request and is set to a new Axios instance with a base URL. To set a timeout in a wrapped Axios instance, pass the timeout option when creating the Axios instance.
export const request = axios.create({ baseURL: 'https://example.com/api', timeout: 5000, // 超時設(shè)置為5秒 });
3. Add an interceptor in the request function:
request.interceptors.request.use(function (config) { // 在發(fā)送請求之前做些什么 return config; }, function (error) { // 對請求錯誤做些什么 return Promise.reject(error); }); request.interceptors.response.use(function (response) { // 對響應(yīng)數(shù)據(jù)做點什么 return response; }, function (error) { // 對響應(yīng)錯誤做點什么 return Promise.reject(error); });
This will add a request interceptor and a response interceptor. You can perform required actions in these interceptors, such as adding authentication headers before the request is sent or checking the response data for errors after the response is returned.
4. Finally, export the request function:
export default request;
Now, every network request that passes the predefined interceptor can be executed through the request function in the application. For example:
import request from './request'; request.get('/users') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
This will make a GET request using a wrapped Axios instance and then handle the response using a predefined interceptor
Full example:
To be carried before sending the request Token and Username, you can use a request interceptor to add authentication headers to all requests,
The request interceptor checks whether values ??named "token" and "username" exist in localStorage and adds them as Authorization and Username headers. Adjust the names and values ??of these headers as appropriate.
To operate on response data, use response interceptors. In the above example, the response interceptor will verify whether the "status" attribute in the response data is "success". If not, treat it as an error and throw it as an exception. The response object contains exception information, including all information such as response headers, status codes, and response bodies. The logic of these checks and exception throwing can be adjusted according to the actual situation.
import axios from 'axios'; export const request = axios.create({ baseURL: 'https://example.com/api', timeout: 5000, // 超時設(shè)置為5秒 }); request.interceptors.request.use(function (config) { // 在發(fā)送請求之前添加身份驗證標(biāo)頭 config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`; config.headers.Username = localStorage.getItem('username'); return config; }, function (error) { // 對請求錯誤做些什么 return Promise.reject(error); }); request.interceptors.response.use(function (response) { // 對響應(yīng)數(shù)據(jù)做些什么 const responseData = response.data; if (responseData.status !== 'success') { const error = new Error(responseData.message || '請求失敗'); error.response = response; throw error; } return responseData.data; }, function (error) { // 對響應(yīng)錯誤做些什么 return Promise.reject(error); });
The above is the detailed content of How to encapsulate Vue3 Axios interceptor into request file. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

It is very common to use axios in Vue applications. axios is a Promise-based HTTP client that can be used in browsers and Node.js. During the development process, the error message "Uncaught(inpromise)Error: Requestfailedwithstatuscode500" sometimes appears. For developers, this error message may be difficult to understand and solve. This article will explore this

How to solve the problem of "Error: NetworkError" when using axios in Vue application? In the development of Vue applications, we often use axios to make API requests or obtain data, but sometimes we encounter "Error: NetworkError" in axios requests. What should we do in this case? First of all, you need to understand what "Error:NetworkError" means. It usually means that the network connection

Choice of data request in Vue: AxiosorFetch? In Vue development, handling data requests is a very common task. Choosing which tool to use for data requests is a question that needs to be considered. In Vue, the two most common tools are Axios and Fetch. This article will compare the pros and cons of both tools and give some sample code to help you make your choice. Axios is a Promise-based HTTP client that works in browsers and Node.

Recently, during the development of Vue applications, I encountered a common problem: "TypeError: Failedtofetch" error message. This problem occurs when using axios to make HTTP requests and the backend server does not respond to the request correctly. This error message usually indicates that the request cannot reach the server, possibly due to network reasons or the server not responding. What should we do after this error message appears? Here are some workarounds: Check your network connection due to

What should I do if "Error: timeoutofxxxmsexceeded" occurs when using axios in a Vue application? With the rapid development of the Internet, front-end technology is constantly updated and iterated. As an excellent front-end framework, Vue has been welcomed by everyone in recent years. In Vue applications, we often need to use axios to make network requests, but sometimes the error "Error: timeoutofxxxmsexceeded" occurs.

Efficiently utilize Vue and Axios to implement batch processing of front-end data. In front-end development, data processing is a common task. When we need to process a large amount of data, processing the data will become very cumbersome and inefficient if there is no effective method. Vue is an excellent front-end framework, and Axios is a popular network request library. They can work together to implement batch processing of front-end data. This article will introduce in detail how to efficiently use Vue and Axios for batch processing of data, and provide relevant code examples.

A complete guide to implementing file upload in Vue (axios, element-ui) In modern web applications, file upload has become a basic function. Whether uploading avatars, pictures, documents or videos, we need a reliable way to upload files from the user's computer to the server. This article will provide you with a detailed guide on how to use Vue, axios and element-ui to implement file upload. What is axiosaxios is a prom based

Vue is a popular JavaScript framework that helps developers build dynamic single-page applications. Axios is a Promise-based HTTP client written for JavaScript, used by browsers and Node.js platforms to send HTTP requests. Vue and Axios are a good combination, but in actual application, you may encounter "Uncaught(inpromise)Error:NetworkErr"
