Vue常用插件:axios

简介

vue官方推荐的ajax请求插件,可运行在客户端和服务器端

安装

插件安装:npm i axios --save

使用

全局配置

src/utils/目录下新建文件request.js,全局配置axios

import axios from 'axios' import { Toast } from 'mint-ui' // 创建axios实例 const request = axios.create({ baseURL: process.env.BASE_API // api的base_url 在 config/dev.env.js 和 config/prod.env.js 文件中配置 // timeout: 5000 // 请求超时时间 }) // request拦截器 service.interceptors.request.use(config => { // Do something before request is sent if (store.getters.token && process.env.BASE_API !== '/') { config.headers["QQ-Token"] = getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改 } return config }, error => { // Do something with request error Promise.reject(error) }) // respone拦截器 request.interceptors.response.use( response => { const res = response.data if (res.code !== 200) { Toast(res.desc) return Promise.reject(new Error('error')) } else { return res.data } }, error => { Toast(error.message) return Promise.reject(error) } ) export default request

GET请求

request.get('/user', { params: { id: 12345 } }).then(res => { console.log(res) }).catch(err => { console.log(err) })

POST请求

request.post('/user', { firstName: 'Fred', lastName: 'Flintstone' }).then(res => { console.log(res) }).catch(err => { console.log(err) })

通用方法

request({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' } })

并发请求

axios.all()axios.spread()两个辅助函数用于处理同时发送多个请求,可以实现在多个请求都完成后再执行一些逻辑

function task1(params) { return axios.get('http://xxx/api/task1', { params }) } function task2() { return axios.get('http://xxx/api/task2') } axios.all([task1({ offset: 1, pageSize: 10 }), task2()]).then(axios.spread((resTask1, resTask2) => { console.log('所有请求完成') console.log('请求1结果', resTask1) console.log('请求2结果', resTask2) })).catch(err => { console.log(err) })

请求方法别名

在使用别名方法时, urlmethoddata 这些属性都不必在配置中指定

  • axios.request(config)
  • axios.get(url[, config])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.post(url[, data[, config]])
  • axios.put(url[, data[, config]])
  • axios.patch(url[, data[, config]])

参考链接

Axios中文说明
axios-js


创作不易,若本文对你有帮助,欢迎打赏支持作者!

 分享给好友: