vue使用封装的axios

vue使用封装的axios

日常使用Vue的项目中,通常使用axios进行数据请求,但重复使用需要更好的进行‘包装’一下。
以下是根据日常项目所用到的方法进行的封装。

'use strict';
import axios from 'axios'
import qs from 'qs'

// 配置请求默认项
axios.defaults = {
    timeout: 10000,
    headers: {
        'Conent-Type': 'application/json'
    }
}
// 设置请求拦截器
axios.interceptors.request.use(config => {
	// 可在这里加请求数据的动效loading
    return config;
}, error => {
    return new Promise.reject(error);
})
// 设置响应拦截器
axios.interceptors.response.use(res => {
	// 在这里取消请求数据的动效loading
    return res.data
}, error => {
	// 在这里取消请求数据的动效loading
    return Promise.reject(`响应code:${error.status}\n响应结果:${error.response}`)
})
/**
 * 封装axios.get请求
 * @param {String} url [请求url地址]
 * @param {Object} params [请求携带参数]
 */
export const fetchGet = (url, params) => {
    return new Promise((resolve, reject) => {
        axios.get(url, {
            params: params
        }).then(res => {
            resolve(res)
        }).catch(error => {
            reject(error);
        })
    })
}
/**
 * 封装axios.post请求
 * @param {String} url [请求url地址]
 * @param {Objeect} params [请求携带参数]
 * @param {String} responseType [响应数据格式]
 */
export const fetchPost = (url, params, responseType) => {
    return new Promise((resolve, reject) => {
        axios({
            method: 'post',
            url: url,
            data: qs(params),
            responseType: responseType || 'json'
        }).then(res => {
            resolve(res)
        }).catch(error => {
            reject(error);
        })
    })
}
/**
 * 封装axios.all并发请求
 * @param {Array} queryList [请求配置项, eg:[{method:'get', url:'api/data'}]]
 */
export const fetchAll = (queryList) => {
    let query = queryList.map((item) => {
        if (item.method === 'get') {
            return fetchGet(item.url, item.params)
        } else {
            return fetchPost(item.url, item.params, item.responseType)
        }
    });
    return new Promise((resolve,reject)=>{
        axios.all(query).then(accpt=>{
            resolve(accpt)
        }).catch(error=>{
            reject(error);
        })
    })
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3 中封装 Axios 并全局使用的步骤如下: 1. 安装 Axios 首先,需要安装 Axios: ``` npm install axios ``` 2. 封装 Axios 在 src 目录下创建一个 api 目录,并在该目录下创建一个 axios.js 文件,用于封装 Axios: ```javascript import axios from 'axios' const instance = axios.create({ baseURL: 'https://api.example.com', }) export default instance ``` 在上面的代码中,我们使用 `axios.create()` 方法创建了一个 Axios 实例,并设置了基础 URL。 接下来,我们可以添加请求拦截器和响应拦截器: ```javascript import axios from 'axios' const instance = axios.create({ baseURL: 'https://api.example.com', }) instance.interceptors.request.use( (config) => { // 在请求发送之前做些什么 return config }, (error) => { // 对请求错误做些什么 return Promise.reject(error) } ) instance.interceptors.response.use( (response) => { // 对响应数据做些什么 return response }, (error) => { // 对响应错误做些什么 return Promise.reject(error) } ) export default instance ``` 在上面的代码中,我们使用 `instance.interceptors.request.use()` 方法添加了一个请求拦截器,用于在请求发送之前对请求进行处理。同时,我们还使用 `instance.interceptors.response.use()` 方法添加了一个响应拦截器,用于对响应进行处理。 3. 全局使用 Axios 在 main.js 文件中,将 Axios 注册为全局插件,以便在整个应用程序中使用: ```javascript import { createApp } from 'vue' import App from './App.vue' import axios from './api/axios' const app = createApp(App) app.config.globalProperties.$http = axios app.mount('#app') ``` 在上面的代码中,我们在 Vue 的全局配置中添加了一个 `$http` 属性,并将 Axios 实例赋值给它。这样,在组件中就可以使用 `$http` 进行请求了: ```javascript export default { methods: { fetchData() { this.$http.get('/data').then((response) => { // 处理响应 }) }, }, } ``` 这就是在 Vue 3 中封装 Axios 并全局使用的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值