Example of steps for configuring axios in vue
With the announcement by You Yuxi, the author of vuejs, that he will no longer continue to maintain vue-resource, and recommends everyone to use axios to start, axios is known to more and more people. This article mainly introduces the steps of configuring Axios based on Vue. The editor thinks it is quite good. Now I will share it with you and give you a reference. I hope it can help everyone.
axios Introduction
axios is a Promise-based HTTP client for browsers and nodejs. It has the following characteristics:
Create XMLHttpRequest from the browser
Issue an http request from node.js
Support Promise API
Interception of requests and responses
Convert request and response data
Cancel request
-
Automatically convert JSON data
Client supports preventing CSRF/XSRF
1. Background
Ajax requests are indispensable in project development
Some ajax requests do not require loading or if the request time is less than a certain amount, loading will not be displayed
Uniform processing of requests in the project (error processing, return data formatting processing, loading processing, token processing)
Configuration is based on personal vue The project is configured, vux-related components have been loaded, and some dependent imports will be made (can be configured as needed)
import Vue from 'vue' import axios from 'axios' //项目的一些环境配置参数,读取host import config from '@/config' //vuex状态管理,这里主要进行对全局loading的控制 import store from '@/store' //vue-router对相应状态码的页面操作(router实例) import router from '@/router' //console对应封装 import { log } from '@/utils'
2. Solution
For the axios encapsulation, we define several parameters to declare
// 加载最小时间 const MINI_TIME = 300 // 超时时间(超时时间) let TIME_OUT_MAX = 5000 // 环境value let _env = process.env.NODE_ENV // 请求接口host let _apiHost = config.api // 请求组(判断当前请求数) let _requests = []
Generally, the root host and Content-Type in a project are unified. Here, axios is configured uniformly (if this backend requires formData The form in the format is content-type='application/x-www-form-urlencoded;charset=utf-8' data. The request data needs to be serialized in the form. The faster way is to introduce the qs library qs.stringify for processing. Transmission)
axios.defaults.headers.common['Content-Type'] = 'application/json' axios.defaults.baseURL = _apiHost
Generally, there will be more than one request in progress at the same time in the project (not yet returned). To determine whether there is still ongoing ajax, you need to maintain the _requests array;
/** * 添加请求,显示loading * @param {请求配置} config */ function pushRequest(config) { log(`${config.url}--begin`) _requests.push(config) Vue.$vux.loading.show({ text: 'Loading' }) store.dispatch('loading') } /** * 移除请求,无请求时关闭loading * @param {请求配置} config */ function popRequest(config) { log(`${config.url}--end`) let _index = _requests.findIndex(r => { return r === config }) if (_index > -1) { _requests.splice(_index, 1) } if (!_requests.length) { Vue.$vux.loading.hide(0) store.dispatch('loading', false) } }
Next, axios will be processed based on the above preparation
/** * 请求地址,请求数据,是否静默,请求方法 */ export default (url, data = {}, isSilence = false, method = 'POST') => { let _opts = { method, url } //通用数据的合并(token) let _data = Object.assign({}, data, { token: store.getters.token }) const _query = {} for (let _key in _data) { if (_data.hasOwnProperty(_key) && _data[_key] !== '') { _query[_key] = _data[_key] } } //axios实例请求定时器ID let _timer = null //判断请求类型 if (method.toLocaleUpperCase() === 'POST') { _opts.data = _query } else { _opts.params = _query } //返回一个promise return new Promise((resolve, reject) => { //实例化axios const _instance = axios.create({ timeout: TIME_OUT_MAX }) //定义请求的唯一标识 let _random = { stamp: Date.now(), url: `${_apiHost + url}` } //判断是否静默(静默的话就不加入请求标识队列,不是则申明此请求实例的定时器) if (!isSilence) { _timer = setTimeout(() => { pushRequest(_random) }, MINI_TIME) } //axios实例发送当前请求 //请求完成:1、取消当前请求的定时器;2、在当前请求标识队列中移除当前标识;
3. If successful, the unified processed data will be returned. If failed, the status code will be judged
_instance(_opts) .then(res => { let responseData = res.data clearTimeout(_timer) popRequest(_random) resolve(res.data) }) .catch(res => { let _response = res.response let _message = null clearTimeout(_timer) popRequest(_random) switch (_response.status) { case 404: _message = '404,错误请求' break case 401: router.push({ path: '/login', query: { redirect: router.currentRoute.fullPath } }) _message = '未授权' break case 403: _message = '禁止访问' break case 408: _message = '请求超时' break case 500: _message = '服务器内部错误' break case 501: _message = '功能未实现' break case 503: _message = '服务不可用' break case 504: _message = '网关错误' break default: _message = '未知错误' } if (!isSilence) { Vue.$vux.toast.show({ text: _response.data && _response.data.error ? _response.data.error : _message, type: 'warn', width: '10em' }) } reject(res) }) }) }
Related recommendations:
About VueJs to build Axios interface request tool analysis
A brief introduction to the get and post methods in axios
vue full analysis--Vue+Vue-router+Vuex+axios
The above is the detailed content of Example of steps for configuring axios in vue. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

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

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

Undress AI Tool
Undress images for free

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

The default map on the iPhone is Maps, Apple's proprietary geolocation provider. Although the map is getting better, it doesn't work well outside the United States. It has nothing to offer compared to Google Maps. In this article, we discuss the feasible steps to use Google Maps to become the default map on your iPhone. How to Make Google Maps the Default Map in iPhone Setting Google Maps as the default map app on your phone is easier than you think. Follow the steps below – Prerequisite steps – You must have Gmail installed on your phone. Step 1 – Open the AppStore. Step 2 – Search for “Gmail”. Step 3 – Click next to Gmail app

WeChat is one of the social media platforms in China that continuously launches new versions to provide a better user experience. Upgrading WeChat to the latest version is very important to keep in touch with family and colleagues, to stay in touch with friends, and to keep abreast of the latest developments. 1. Understand the features and improvements of the latest version. It is very important to understand the features and improvements of the latest version before upgrading WeChat. For performance improvements and bug fixes, you can learn about the various new features brought by the new version by checking the update notes on the WeChat official website or app store. 2. Check the current WeChat version We need to check the WeChat version currently installed on the mobile phone before upgrading WeChat. Click to open the WeChat application "Me" and then select the menu "About" where you can see the current WeChat version number. 3. Open the app

When logging into iTunesStore using AppleID, this error saying "This AppleID has not been used in iTunesStore" may be thrown on the screen. There are no error messages to worry about, you can fix them by following these solution sets. Fix 1 – Change Shipping Address The main reason why this prompt appears in iTunes Store is that you don’t have the correct address in your AppleID profile. Step 1 – First, open iPhone Settings on your iPhone. Step 2 – AppleID should be on top of all other settings. So, open it. Step 3 – Once there, open the “Payment & Shipping” option. Step 4 – Verify your access using Face ID. step

Having issues with the Shazam app on iPhone? Shazam helps you find songs by listening to them. However, if Shazam isn't working properly or doesn't recognize the song, you'll have to troubleshoot it manually. Repairing the Shazam app won't take long. So, without wasting any more time, follow the steps below to resolve issues with Shazam app. Fix 1 – Disable Bold Text Feature Bold text on iPhone may be the reason why Shazam is not working properly. Step 1 – You can only do this from your iPhone settings. So, open it. Step 2 – Next, open the “Display & Brightness” settings there. Step 3 – If you find that “Bold Text” is enabled

Windows 11, as the latest operating system launched by Microsoft, is deeply loved by users. In the process of using Windows 11, sometimes we need to obtain system administrator rights in order to perform some operations that require permissions. Next, we will introduce in detail the steps to obtain system administrator rights in Windows 11. The first step is to click "Start Menu". You can see the Windows icon in the lower left corner. Click the icon to open the "Start Menu". In the second step, find and click "

Screenshot feature not working on your iPhone? Taking a screenshot is very easy as you just need to hold down the Volume Up button and the Power button at the same time to grab your phone screen. However, there are other ways to capture frames on the device. Fix 1 – Using Assistive Touch Take a screenshot using the Assistive Touch feature. Step 1 – Go to your phone settings. Step 2 – Next, tap to open Accessibility settings. Step 3 – Open Touch settings. Step 4 – Next, open the Assistive Touch settings. Step 5 – Turn on Assistive Touch on your phone. Step 6 – Open “Customize Top Menu” to access it. Step 7 – Now you just need to link any of these functions to your screen capture. So click on the first

Is the clock app missing from your phone? The date and time will still appear on your iPhone's status bar. However, without the Clock app, you won’t be able to use world clock, stopwatch, alarm clock, and many other features. Therefore, fixing missing clock app should be at the top of your to-do list. These solutions can help you resolve this issue. Fix 1 – Place the Clock App If you mistakenly removed the Clock app from your home screen, you can put the Clock app back in its place. Step 1 – Unlock your iPhone and start swiping to the left until you reach the App Library page. Step 2 – Next, search for “clock” in the search box. Step 3 – When you see “Clock” below in the search results, press and hold it and

If you don't have control over the zoom level in Safari, getting things done can be tricky. So if Safari looks zoomed out, that might be a problem for you. Here are a few ways you can fix this minor zoom issue in Safari. 1. Cursor magnification: Select "Display" > "Cursor magnification" in the Safari menu bar. This will make the cursor more visible on the screen, making it easier to control. 2. Move the mouse: This may sound simple, but sometimes just moving the mouse to another location on the screen may automatically return it to normal size. 3. Use Keyboard Shortcuts Fix 1 – Reset Zoom Level You can control the zoom level directly from the Safari browser. Step 1 – When you are in Safari
