axious学习

axious

ajax和axios、fetch的区别

https://www.jianshu.com/p/8bc48f8fde75

官网参考

https://www.kancloud.cn/yunye/axios/234845

chorme浏览器设置跨域

https://jingyan.baidu.com/article/148a1921c9dbf24d71c3b11f.html

axious发送Get请求

   var App = {
        template:`<div><h1>我是入口组件</h1>
                    <button @click="sendAjax">axios发送</button>
                    </div>`,
        methods:{
            sendAjax(){
                this.$axios.get('http://127.0.0.1:8000/fs/ajax1.html?p=123')
                    .then(res=>{
                        console.log(res)
                    }).catch(err=>{
                        console.log(err)
                })
            }
        }
    }

或者

// 可选地,上面的请求可以这样做
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

发送post请求

         sendPost(){
                this.$axios.defaults.baseURL='http://127.0.0.1:8000/'
                this.$axios.post('fs/f1.html',{
                    user: 'Fred',
                    pwd: 'Flintstone',
                    email:'1233@qq.com',
                    age:'20'
                })
                    .then(res=>{
                        console.log(res)
                        console.log(res.data)
                    }).catch(err=>{
                    console.log(err)
                })
            }
           >this.$axios.defaults.baseURL='http://127.0.0.1:8000/' 

配置基础的URL,后面发送的时候可以按照这个拼接

并发请求

https://www.kancloud.cn/yunye/axios/234845


axios相关配置

transformResponse

transformResponse 在传递给 then/catch前,允许修改响应数据

 sendAjax(){
        this.$axios.get('http://127.0.0.1:8000/fs/ajax1.html',{
            params:{
                id:6
            },
            // `transformResponse` 在传递给 then/catch 前,允许修改响应数据
            transformResponse: [function (data) {
                // 对 data 进行任意转换处理
                console.log(data)
                var res = JSON.parse(data)
                res.msg = 'transformResponse修改了data'
                return res;
            }],
        })
            .then(res=>{
                console.log(res)
                console.log(res.data)
            }).catch(err=>{
            console.log(err)
        })
    },

注意:如果在tans…中不进行json转换而直接返回的话,在then中拿到的res是一个字符串

transformRequest
sendPost(){
        this.$axios.defaults.baseURL='http://127.0.0.1:8000/'
        this.$axios.post('fs/ajaxpost',{
            user: 'Fred',
            pwd: 'Flintstone',
            email:'1233@qq.com',
            age:'20',

        },{
            // `transformRequest` 允许在向服务器发送前,修改请求数据
            // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法
            // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
            transformRequest: [function (data) {
                // 对 data 进行任意转换处理
                console.log(data)
                data.user = 'Herry'
                data = JSON.stringify(data)
                return data;
            }],
        })
            .then(res=>{
                console.log(res)
                console.log(res.data)
            }).catch(err=>{
            console.log(err)
        })
    }

注意:transformRequest需要将data转换为json字符串,不然后端拿到的还是一个对象

请求拦截器和响应拦截器

利用请求拦截器和响应拦截器模范cookie和加载动画

  • 请求拦截器
//添加请求拦截器
                this.$axios.interceptors.request.use((config)=>{
                    console.log('---config',config)
                    var token = localStorage.getItem('token')
                    if(token){
                        config.headers['token'] = token
                    }
                    this.isShow = true
                    // setTimeout(function () {
                    //     console.log('timeout')
                    // },1000)  此操作是异步的
                    return config
                },function (err) {
                    return Promise.reject(err)
                })

  • 响应拦截器
       // 添加响应拦截器
                this.$axios.interceptors.response.use((response)=>{
                    // 对响应数据做点什么
                    console.log('response---',response)
                    if(response.data.token){
                        localStorage.setItem('token',response.data.token)
                    }
                    this.isShow = false
                    return response;
                }, function (error) {
                    // 对响应错误做点什么
                    return Promise.reject(error);
                });

更多

https://www.kancloud.cn/yunye/axios/234845

### 回答1: Axios二次封装是指在Axios库的基础上进行二次封装,将Axios的一些默认配置、拦截器等进行统一设置和管理,以便于在项目中方便地调用和管理。它的作用包括: 1. 统一处理HTTP请求和响应的配置,如默认请求头、请求超时时间、请求拦截器、响应拦截器等,减少代码重复度; 2. 对请求和响应进行统一处理,如请求错误处理、响应数据格式化等,提高代码的可维护性和可读性; 3. 提高开发效率,减少重复代码,避免因为忘记设置某一项配置而导致的错误; 4. 在多个页面调用同一个接口时,可以避免重复的配置和拦截器设置,提高代码复用性和开发效率。 通过二次封装,我们可以在项目中更加高效地使用Axios库,提高我们的开发效率和代码质量。 ### 回答2: axious二次封装是对axios这个网络请求库进行再次封装,将其功能进行增强和扩展,使其更加方便易用。通过二次封装,可以对axios的请求配置、错误处理、拦截器等进行统一管理和优化。 axious二次封装的作用主要有以下几点: 1. 简化使用:通过二次封装,可以提供更简洁的调用接口,屏蔽底层axios的复杂性,减少重复代码的编写,提高开发效率。 2. 统一配置:可以在二次封装中设置全局的请求默认配置,如请求的baseURL、请求头、超时时间等,避免在每个请求中重复设置。 3. 错误处理:通过二次封装可以统一处理请求的错误,如网络错误、请求超时、服务端返回的错误码等,可以定义统一的错误提示信息或进行自定义的错误处理逻辑。 4. 拦截器:axious的拦截器功能可以在请求发送前和请求返回后做一些处理。通过二次封装,可以在拦截器中加入通用的逻辑,如添加请求头、加载loading状态、处理请求参数等。 5. 响应格式统一处理:在二次封装中可以对返回的数据进行格式统一处理,如将json格式转换为对象类型、处理特定响应码等。 总之,axious二次封装可以提高开发效率、提供友好的接口、优化错误处理和拦截器等功能,使网络请求更加方便、可靠和高效。 ### 回答3: Axios是一个基于Promise的HTTP客户端,用于进行网络请求。它具有简洁的API和良好的兼容性,被广泛应用于前端开发中。 Axios二次封装是指在Axios的基础上进行进一步封装,以便更好地满足具体项目的需求。二次封装的作用主要有以下几点: 1. 简化请求:通过二次封装,可以将一些常用的网络请求操作进行封装,简化调用的过程。例如可以实现统一的请求头、错误处理、loading状态等,提高代码的可读性和维护性。 2. 统一接口:二次封装可以将不同的请求接口进行统一,即使后台接口进行了修改或者变动,也只需要在二次封装中进行调整,而不需要在每个使用该接口的地方进行修改,提高了代码的可维护性。 3. 数据处理:通过二次封装,可以对后台返回的数据进行处理,例如对返回的数据进行格式化、去除不需要的字段、进行预处理等操作,提供更加合适的数据给前端使用。 4. 错误处理:二次封装可以统一处理请求的错误,例如网络错误、服务器返回的错误码等,可以通过一些处理方式来统一处理这些错误,提高用户体验。 5. 扩展功能:二次封装还可以根据具体项目的需求,添加一些扩展功能,例如接口的拦截、取消请求、队列处理、请求缓存等。这些功能可以根据具体需求进行加入,提高代码的灵活性和可扩展性。 综上所述,Axios二次封装可以提供更便捷、易用、可维护的网络请求操作,提高代码的质量和开发效率,适用于各种前端项目的开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值