1. 什么是Axios
Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 Node.js 中。它支持并发请求、拦截请求和响应、转换请求数据和响应数据等一系列强大的功能。
2. Axios在Vue中的应用
在Vue项目中使用Axios获取数据非常的方便,先在项目中安装 Axios。
//使用npm安装Axios
npm install axios --save
在 Vue 项目中一般会使用 Vuex 来管理数据的状态,并且使用 Axios 来获取和提交数据。为了方便起见,我们可以将 Axios 封装成一个全局的插件,可以方便的管理和共享数据。
2.1 在Vue实例中引入Axios
在 main.js 文件中,可以使用 Vue.prototype.$http = Axios 将 Axios 引入到 Vue 实例中。
import Axios from 'axios'
Vue.prototype.$http = Axios
2.2 使用Axios获取数据
在项目中,我们可以使用 Axios 来获取数据。Axios 默认会返回一个 Promise 对象,在返回的数据中可以拦截请求和响应,并可以转换数据格式。
//获取用户列表
this.$http.get('/api/users')
.then(response => {
// 请求成功时执行的代码
console.log(response.data)
})
.catch(error => {
// 请求失败时执行的代码
console.log(error.response.data)
})
2.3 将Axios封装成插件
为了方便管理和共享数据,我们可以将 Axios 封装成一个插件。在项目中,我们可以创建一个 axios.js 文件,将Axios封装成插件。
import Axios from 'axios'
const axios = {}
axios.install = function (Vue) {
Vue.prototype.$http = Axios.create({
baseURL: 'http://localhost:3000',
timeout: 5000,
headers: {
'Content-Type': 'application/json'
},
})
}
export default axios
在 main.js 文件中引入 axios,并使用 Vue.use() 将 axios 安装到 Vue 中。
import axios from './axios'
Vue.use(axios)
现在就可以在项目的任何地方,直接使用 this.$http 来访问 Axios 了。
2.4 在Vuex中使用Axios获取数据
在Vuex中使用Axios获取数据也非常的方便,可以使用 Vuex 4 中的 actions,将数据获取的逻辑放在 actions 中,并且在组件中使用 dispatch 触发 action。
用于处理所有跟应用状态打交道的事件。
import { createStore } from 'vuex'
const store = createStore({
state: {
users: []
},
actions: {
getUsers ({ commit }) {
this.$http.get('/api/users')
.then(response => {
commit('SET_USERS', response.data)
})
.catch(error => {
console.log(error.response.data)
})
}
},
mutations: {
SET_USERS (state, users) {
state.users = users
}
}
})
export default store
在组件中使用 dispatch 触发 action。
export default {
mounted () {
this.$store.dispatch('getUsers')
}
}
3. 总结
Axios 是一个非常强大的 HTTP 库,可以用于 Vue 项目的数据获取。在 Vue 项目中使用 Axios,可以将其封装成一个插件,方便管理和共享数据。在 Vuex 中,使用 Axios 可以将数据获取的逻辑放在 actions 中,保持代码的整洁。