axios在项目中的使用

一、重写push | replace

重写原因:编程式路由跳转到当前路由(参数不变),多次执行会抛出NavigationDuplicated的警告错误

(工作的时候想处理掉,不想处理对于你的程序没有任何影响)

第一种解决方案:是给push函数,传入相应的成功的回调与失败的回调

this.$router.push(
    {name:'search',params:{keyword:this.keyword},()=>{
    //可以传入成功的回调
},()=>{
    //可以传入失败的回调
}
}

第一种解决方案可以暂时解决当前问题,但是以后再用push|replace还是会出现类似现象,因此我们需要从‘根’治病,即重写push | replace

/*
    第一个参数:告诉原来方法,你往那里跳转(传递哪些参数)
    第二个参数:成功回调
    第三个参数:失败回调
    call | apply 区别:
    相同:都可以调用函数一次,都可以改变函数的上下文一次(this)
    不同:call传递参数用逗号隔开,apply传递数组
*/
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
​
VueRouter.prototype.push = function(location, resolve, reject) {
    if (resolve && reject) {
        originPush.call(this, location, resolve, reject);
    } else {
        originPush.call(this, location, () => {}, () => {});
    }
}
​
VueRouter.prototype.replace = function(location, resolve, reject) {
    if (resolve && reject) {
        originreplace.call(this, location, resolve, reject);
    } else {
        originreplace.call(this, location, () => {}, () => {});
    }
}

二、axios二次封装搭配nprogress进度条使用

跨域:如果多次请求协议、域名、端口号有不同的地方,称之为跨域 解决办法:JSONP、CROS、代理

对于axios二次封装,本人也不太了解,只是参考了官网文档了解了一点点(doge!!!!)

axios官方文档:Axios 中文文档 | Axios 中文网 | Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js

//对于axios进行二次封装
import axios from "axios";
import nprogress from "nprogress";
​
//如果出现进度条没有显示:一定是你忘记了引入样式了
import "nprogress/nprogress.css";
//底下的代码也是创建axios实例
let requests = axios.create({
    //基础路径
    baseURL: "/api",
    //请求不能超过5S
    timeout: 5000,
});
​
//请求拦截器----在项目中发请求(请求没有发出去)可以做一些事情
requests.interceptors.request.use((config) => {
    //进度条开始动
    nprogress.start();
    //config:配置对象,对象里面有一个属性很重要,headers请求头
    return config;
});
​
//响应拦截器----当服务器手动请求之后,做出响应(相应成功)会执行的
requests.interceptors.response.use(res => {
    //进度条结束
    nprogress.done();
    return res.data;
}, err => {
    return Promise.reject(new Error('Fali'));
});
​
//这里的代码是暴露一个axios实例
export default requests;

三、API接口统一管理

封装一个JS模块,进行API接口统一管理,能方便维护

//当前这个模块:API进行统一管理
import requests from "./request";
​
//三级联动接口:/api/product/getBaseCategoryList   GET    没有任何参数
export const reqCategoryList = () => {
    return requests({
        url: '/product/getBaseCategoryList', //因为配置了baseURL,所以/api可以省略
        method: 'get'
    })
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
项目使用axios可以通过以下步骤进行: 1. 首先,需要在项目引入axios。可以通过在main.js文件引入axios,并将其挂载到Vue实例的原型上,以便在组件使用axios。\[2\] 2. 在组件使用axios可以通过以下方式进行: - 使用get方法获取数据,可以通过传递url和参数来请求指定的信息,并通过then方法处理返回的数据,通过catch方法处理错误。\[2\] - 使用post方法向指定资源提交数据,可以通过传递url和数据对象来提交数据,并通过then方法处理返回的数据,通过catch方法处理错误。\[2\] - 使用put方法更新数据,可以通过传递url和数据对象来更新指定的文档的内容,并通过then方法处理返回的数据,通过catch方法处理错误。\[2\] - 使用patch方法更新数据,是对put方法的补充,用来对已知资源进行局部更新,并通过then方法处理返回的数据,通过catch方法处理错误。\[2\] - 使用delete方法请求服务器删除指定的数据,并通过then方法处理返回的数据,通过catch方法处理错误。\[2\] 3. 可以通过创建axios实例来进行全局配置。可以设置基础URL和超时时长等全局配置项。\[1\]可以通过创建axios实例来进行请求拦截器和响应拦截器的配置,可以在请求发出前和响应返回后做一些处理。\[1\] 4. 可以通过创建axios实例来进行并发请求。可以使用axios的all方法来同时发送多个请求,并通过then方法处理返回的数据。\[3\] 总结来说,在项目使用axios需要引入axios并挂载到Vue实例上,然后可以在组件使用axios的各种请求方法来发送请求,并可以通过创建axios实例来进行全局配置、请求拦截器和响应拦截器的配置,以及并发请求的处理。 #### 引用[.reference_title] - *1* [axios项目使用](https://blog.csdn.net/A32626231165165/article/details/123512985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [axios项目的基本用法](https://blog.csdn.net/NET_worker_/article/details/107088670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三年ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值