Vue学习-axios学习

208 阅读2分钟

Vue学习-axios学习

axios的基本使用

安装

npm install axios --save

请求数据

import axios from 'axios'

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app')

// 默认是get请求
axios({
    url: 'http://123.207.32.32:8000/home/multidata',
}).then(function(res) {
    console.log(res);
})

携带参数

axios({
    url: 'http://123.207.32.32:8000/home/data',
    params: {
        type: 'pop',
        page: 1
    }
}).then(res => console.log(res));

axios发送并发请求

axios.all([axios(), axios()]).then(results => {
	results[0], results[1]
})
axios.all([
    axios({
        url: 'http://123.207.32.32:8000/home/multidata',
    }),
    axios({
        url: 'http://123.207.32.32:8000/home/data',
        params: {
            type: 'pop',
            page: 1
        }
    })
]).then(res => {
    console.log(res); // 数组
})

或者
.then(axios.spread((res1, res2) => {
    console.log(res1);
    console.log(res2);
})

axios配置信息相关

全局配置

baseURL

axios.defaults.baseURL = 'http://123.207.32.32:8000'

timeout

axios.defaults.timeout = 5000

常见的配置选项

  • 请求地址: url
  • 请求类型: method
  • 根路径: baseURL
  • 请求前的数据处理: transformRequest
  • 请求后的数据处理: transformResponse
  • 自定义的请求头: headers
  • URL查询对象: params
  • 响应的数据格式: responseType

axios实例和模块的封装

axios实例

之前使用的是全局的axios,如果出现请求在不同的服务器上,就需要创建axios实例

const instance1 = axios.create({
    baseURL: 'http://123.207.32.32:8000',
    timeout: 5000
});
instance1({
    url: '/home/multidata'
}).then(res => {
    console.log(res);
})

instance1({
    url: '/home/data',
    params: {
        type: 'pop',
        page: 1
    }
}).then(res => {
    console.log(res);
})

const instance2 = axios.create({
    baseURL: 'http://111.207.32.32:8000',
    timeout: 10000
});

模块化封装

import axios from 'axios'
// export function request(config) {
//     return new Promise((resolve, reject) => {
//         const instance = axios.create({
//             baseURL: 'http://123.207.32.32:8000',
//             timeout: 5000
//         });

//         instance(config)
//             .then(res => {
//                 resolve(res);
//             }).catch(err => {
//                 reject(err);
//             })
//     });
// }


export function request(config) {
    const instance = axios.create({
        baseURL: 'http://123.207.32.32:8000',
        timeout: 5000
    });
    return instance(config);
}

axios拦截器的使用

发送网络请求之前或者收到响应数据之后,对请求(响应)数据进行一些处理

请求拦截的作用

  1. 比如config中的一些信息不符合服务器的要求,要对请求参数进行一些处理

  2. 展示请求的loading

  3. 某些网络请求必须携带token,提示用户登录

响应拦截的作用

  1. 对响应数据进行一些处理
export function request(config) {
    const instance = axios.create({
        baseURL: 'http://123.207.32.32:8000',
        timeout: 5000
    });
    // 拦截器
    // 请求拦截器
    instance.interceptors.request.use(config => {
        // 1. 比如config中的一些信息不符合服务器的要求,要对请求参数进行一些处理
        // 2. 展示请求的loading
        // 3. 某些网络请求必须携带token,提示用户登录
        console.log('请求参数进行处理');
        return config;
    }, err => {
        console.log(err);
    });
    // 响应拦截器
    instance.interceptors.response.use(res => {
        console.log(res);
        return res.data;
    }, err => {
        console.log(err);
    });
    return instance(config);
}

结束语

Vue基础知识部分到这就告一段落了。

这是跟着B站的视频边学边记的笔记,以免学完之后过两天就忘完了,时不时的翻一下。

视频链接: 最全最新Vue、Vuejs教程,从入门到精通_哔哩哔哩_bilibili

山河远阔、要热爱生活!