Home Web Front-end Vue.js Implementation and encapsulation of asynchronous requests in Vue

Implementation and encapsulation of asynchronous requests in Vue

Oct 15, 2023 am 09:41 AM
vue encapsulation Asynchronous request

Implementation and encapsulation of asynchronous requests in Vue

Implementation and encapsulation of asynchronous requests in Vue

In development, it is often necessary to make asynchronous requests with the back-end server to obtain data or submit data. Vue provides a simple and powerful way to handle asynchronous requests, that is, using the axios library for encapsulation.

1. Implementation of asynchronous requests
In the Vue project, asynchronous requests can be implemented by using axios in the component's methods. The following is an example of obtaining user information:

  1. First, you need to introduce the axios library into the project. You can install it through npm, or introduce it directly into the page:

    import axios from 'axios'
    Copy after login
  2. In the component's methods, write the code for the asynchronous request:

    methods: {
      getUserInfo() {
     axios.get('/api/user').then(response => {
       // 请求成功后的处理逻辑
       console.log(response.data)
     }).catch(error => {
       // 请求失败后的处理逻辑
       console.error(error)
     })
      }
    }
    Copy after login
  3. Call the getUserInfo method when the component's life cycle or event is triggered:

    created() {
      this.getUserInfo()
    }
    Copy after login

In the above code, the get method of axios is used to send a GET request. The request address is /api/user. After the request is successful, the returned data is obtained through the then method. The request fails. Then capture the error information through the catch method.

2. Encapsulation of asynchronous requests
In order to improve the reusability and maintainability of the code, asynchronous requests can be encapsulated into an independent module for use by multiple components.

  1. First, create an api.js file to encapsulate all asynchronous request methods:

    import axios from 'axios'
    
    export function getUserInfo() {
      return axios.get('/api/user')
    }
    Copy after login
  2. Introduce api.js into the component , and call the corresponding method:

    import { getUserInfo } from './api.js'
    
    methods: {
      getUser() {
     getUserInfo().then(response => {
       console.log(response.data)
     }).catch(error => {
       console.error(error)
     })
      }
    }
    Copy after login

By encapsulating all asynchronous request methods into api.js, you can directly call these methods to obtain data, avoiding duplication in each component Write the same code.

3. Use axios interceptor
In asynchronous requests, it is often necessary to perform some general processing before the request is sent or after the response is returned, such as adding request headers, modifying request parameters, and uniformly handling errors, etc. At this time, you can use the axios interceptor to achieve this.

  1. In api.js, add the following code:

    // 添加请求拦截器,设置请求头
    axios.interceptors.request.use(
      config => {
     config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token')
     return config
      },
      error => {
     return Promise.reject(error)
      }
    )
    
    // 添加响应拦截器,统一处理错误
    axios.interceptors.response.use(
      response => {
     return response
      },
      error => {
     console.error(error)
     return Promise.reject(error)
      }
    )
    Copy after login

By adding an interceptor, you can set the request header before the request is sent. Errors are handled uniformly after the response is returned.

  1. Modify the getUserInfo method to meet the requirements of the interceptor:

    export function getUserInfo() {
      return axios.get('/api/user').then(response => {
     return response.data
      }).catch(error => {
     console.error(error)
     return Promise.reject(error)
      })
    }
    Copy after login

By using .then and .catch in the getUserInfo method, the The returned Promise object is passed to the interceptor.

Through the above steps, the encapsulation and implementation of asynchronous requests in Vue are realized. Through encapsulation, the asynchronous request code is made more concise, unified and maintainable, and it also improves the reusability of the code. At the same time, through the use of interceptors, request modifications and error handling can be easily performed before the request is sent and after the response is returned.

The above is the detailed content of Implementation and encapsulation of asynchronous requests in Vue. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Vue realizes marquee/text scrolling effect Vue realizes marquee/text scrolling effect Apr 07, 2025 pm 10:51 PM

Implement marquee/text scrolling effects in Vue, using CSS animations or third-party libraries. This article introduces how to use CSS animation: create scroll text and wrap text with <div>. Define CSS animations and set overflow: hidden, width, and animation. Define keyframes, set transform: translateX() at the beginning and end of the animation. Adjust animation properties such as duration, scroll speed, and direction.

What method is used to convert strings into objects in Vue.js? What method is used to convert strings into objects in Vue.js? Apr 07, 2025 pm 09:39 PM

When converting strings to objects in Vue.js, JSON.parse() is preferred for standard JSON strings. For non-standard JSON strings, the string can be processed by using regular expressions and reduce methods according to the format or decoded URL-encoded. Select the appropriate method according to the string format and pay attention to security and encoding issues to avoid bugs.

Is the request method (GET, POST, etc.) used correctly? Is the request method (GET, POST, etc.) used correctly? Apr 07, 2025 pm 10:09 PM

The use of Axios request method in Vue.js requires following these principles: GET: Obtain resources, do not modify data. POST: Create or submit data, add or modify data. PUT: Update or replace existing resources. DELETE: Delete the resource from the server.

How to reference js file with vue.js How to reference js file with vue.js Apr 07, 2025 pm 11:27 PM

There are three ways to refer to JS files in Vue.js: directly specify the path using the <script> tag;; dynamic import using the mounted() lifecycle hook; and importing through the Vuex state management library.

What does the vue component pass value mean? What does the vue component pass value mean? Apr 07, 2025 pm 11:51 PM

Vue component passing values ​​is a mechanism for passing data and information between components. It can be implemented through properties (props) or events: Props: Declare the data to be received in the component and pass the data in the parent component. Events: Use the $emit method to trigger an event and listen to it in the parent component using the v-on directive.

What does it mean to lazy load vue? What does it mean to lazy load vue? Apr 07, 2025 pm 11:54 PM

In Vue.js, lazy loading allows components or resources to be loaded dynamically as needed, reducing initial page loading time and improving performance. The specific implementation method includes using <keep-alive> and <component is> components. It should be noted that lazy loading can cause FOUC (splash screen) issues and should be used only for components that need lazy loading to avoid unnecessary performance overhead.

Vue.js How to convert an array of string type into an array of objects? Vue.js How to convert an array of string type into an array of objects? Apr 07, 2025 pm 09:36 PM

Summary: There are the following methods to convert Vue.js string arrays into object arrays: Basic method: Use map function to suit regular formatted data. Advanced gameplay: Using regular expressions can handle complex formats, but they need to be carefully written and considered. Performance optimization: Considering the large amount of data, asynchronous operations or efficient data processing libraries can be used. Best practice: Clear code style, use meaningful variable names and comments to keep the code concise.

What are the common solutions for Vue Axios &Network Error& What are the common solutions for Vue Axios &Network Error& Apr 07, 2025 pm 09:51 PM

Common ways to solve Vue Axios "Network Error": Check network connections. Verify the API endpoint URL. Check CORS settings. Handle error response. Check the firewall or proxy. Adjustment request timed out. Check the JSON format. Update the Axios library.

See all articles