axios个人总结

时间:2022-03-02 13:25:35

1.axios安装

npm install axios

import axios from ‘axios‘

  

 

2.axios使用

使用格式是

1.axios({配置信息}).then(res=>{console.log(res)}).catch(err=>{console.log(err)})
//res为得到的数据,其中res.data是得到的数据,其余都是axios自动携带的数据;
//axios整合了Promise的可存储功能,所以可以像对象一样储存得到的数据;

2.axios.get(‘url‘,{params:{内部放置get专用参数}}) ;
//get请求专用,放置在params中的参数会自动的衔接到url地址后,当然也可以直接写在url中; 3.axios。post(‘url‘,{data:{内部放置post专用参数}});
//post请求专用,post参数必须放置在设置的data属性中; 4.axios.delete(‘url‘,{}); 5.axios.head(‘url‘,{}); 6.axios.put(‘url‘,{}); .... axios最简单的申请依然是第一行

  

 

3.基础配置(全局配置)

axios(指最简单申请)只有一个参数`{配置参数}`,该参数在很多次请求中是有很多配置属性是重复的,所以可以设置一个全局配置,类似js对象的原型链配置

注意:全局配置后,本次项目所有的axios会默认使用该配置,全局配置下相同配置只能有一个,例如,不能同时存在两个baseURL

axios.defaults.配置属性 = ‘值’
//相当于修改了本次项目axios的默认属性

 

4.常用配置

请求地址 url:‘...‘

请求类型 method:get //默认为get

请求根路径 baseURL:"https://www.baidu.com/" //在url不为绝对定位的情况下,根路径会自动加在url之前

请求前的数据处理 transformRequest:(data)=>{...} 

请求后的数据处理 transformResponse:(data)=>{...}

自定义请求头 headers:{...}

get请求参数 params:{...}

post请求参数 data:{...}

参数序列化(JSON)函数 paramsSerializer:(params)=>{...}

 

5.axios实例化

为何要实例化:由于全局配置关系,整个axios只能拥有一个全局配置,而实例化相当于可以拥有多个不同的配置而调用

通过import axios from ‘axios‘ 得到的axios是全局axios,在全局axios上设置配置既是全局配置,

全局axios ==生成==》 axios实例 (在实例上配置,即该实例上的全局配置,简称实例配置)

在面对不同的服务器时,生成对应的实例

生成方法

const instancel = axios.create({内部写入的配置即为实例配置})

instancel拥有和axios相同的方法,在创造该实例配置时候写入的配置为该实例全局共享
instancel({ url:‘...‘ }).then(res=>{...}) //实例申请方法

 

6.axios注意事项

思路:axios仅引用一次,在requrst.js中,该文件中仅创建axios实例并引导出,由其他文件(home.js)来用不同实例来写成对应的申请函数,最后由其他vue文件进行引用这些函数进行申请

 

axios → requrst.js(创建不同实例并返回,baseURL放在其中)→home.js(接受实例,并创建对应的申请函数)→ vue文件(引用home.js或对应的函数,调用并获得申请的值)

为什么要这样做,因为是第三方程序,为防止不再更新或者大面积修改,这样做的话,仅修改的文件只有requrst.js,其余文件的输入输出由自己手写,保证功能正常即可正常运行

以下为详细代码

requrst.js

 import axios from ‘axios‘;
export function request(config){
    const instance = axios.create({
        baseURL:"...",
        // baseURL:"...",
        timeout:0000
    });
    
    // 发送真正的网络请求
    return instance(config);
}

home.js

import { request } from ‘./request.js‘

export function getHomeMultidata() {
    return request({ url: ‘/home/multidata‘ })
}

export function getHomeGoods(type, page) {
    return request({ url: ‘/home/data‘, params: { type, page } }) 
}

vue文件

<script>
    import { getHomeMultidata } from "@network/home.js"; //引用
    
    mounted(){
    getHomeMultidata().then(res => { //执行
      this.banners = res.data.banner.list;
      this.recommends = res.data.recommend.list;
    });
    }

</script>

 6.拦截器

待更新