mpvue中,fly请求拦截[通俗易懂]

mpvue中,fly请求拦截[通俗易懂]mpvue中,fly请求拦截

大家好,又见面了,我是你们的朋友全栈君。

在小程序项目中,通常需要在请求header中带上token,以识别用户身份,每一个请求都去做判断处理十分的麻烦,因此想到了用flyio,fly和axios十分相似,但是axios并不能在小程序中使用,因此还是选择了fly。 fly里面的拦截机制还是很强大的,并且在错误返回信息做了优化处理,在fly拦截器中支持执行异步任务,就是说在请求数据的时候如果拦截到token不存在那么我们就可以在拦截器中重新获取token,再接着执行之前的请求。

const Fly = require(“flyio/dist/npm/wx”) const fly = new Fly Vue.prototype.$http = fly; fly.interceptors.request.use((request) => { //给所有请求添加自定义header if (api.Get(‘token’)) { request.timeout = 30000, request.headers = { “content-type”: “application/json”, “cld.stats.page_entry”: api.Get(‘scene’), “version”: store.state.version, “token”: api.Get(‘token’) } wx.showLoading({ title: “加载中”, mask: true, }); return request; } else { fly.lock();//锁住请求 return Public.Load().then(res => { request.timeout = 30000, request.headers = { “content-type”: “application/json”, “cld.stats.page_entry”: api.Get(‘scene’), “version”: store.state.version, “token”: api.Get(‘token’) } wx.showLoading({ title: “加载中”, mask: true, }); //等待token返回之后在解锁, fly.unlock(); return request;//继续之前的请求, }) } }) fly.interceptors.response.use( (response) => { wx.hideLoading(); return response }, (err) => { wx.hideLoading(); if (err.status == 0) { return “网络连接异常” } else if (err.status == 1) { return “网络连接超时” } else if (err.status == 401) { return “用户未登录” } else { if (err.response.data.message) { return err.response.data.message } else { return ‘请求数据失败,请稍后再试’ } }; // Do something with response error } )

转载于:https://juejin.im/post/5c886d85f265da2ddc3cb88b

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106936.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java8中 Collectors.groupingBy用法

    java8中 Collectors.groupingBy用法Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组1、数据准备:publicProduct(Longid,Integernum,BigDecimalprice,Stringname,Stringcategory){this.id=id;this.num=num;this.price=price;this.name=name;this.category=category;}…

  • 利用python、tensorflow、opencv实现人脸识别(包会)!「建议收藏」

    利用python、tensorflow、opencv实现人脸识别(包会)!「建议收藏」 一,前言本人是机械专业在读硕士,在完成暑假实践的时候接触到了人脸识别,对这一实现很感兴趣,所以花了大概十天时间做出了自己的人脸识别。这篇文章应该是很详细的了所以帮你实现人脸识别应该没什么问题。先说本博文的最终要达到的效果:通过一系列操作,在摄像头的视频流中识别特定人的人脸,并且予以标记。本人通过网上资料的查询发现这类人脸识别,大多参考了一位日本程序员小哥的文章。链接:http…

    2022年10月25日
  • 多层感知机和神经网络_CNN采用多层感知机进行分类

    多层感知机和神经网络_CNN采用多层感知机进行分类单独的ESN仿真:ESN的运行结果如下所示:这个部分的误差为:0.0435ESN部分就不多做介绍了,你应该了解的,下面我们对ESN和BP改进和极限学习改进分别进行修改和说明,并进行仿真。ESN+BP的仿真:首先,在原始的ESN中,权值的计算是通过pseudoinverse.m这个函数进行计算的,其主要内容就是:即:这里,我们的主要方法…

  • offsetWidth与offsetLeft

    offsetWidth与offsetLeft1、offsetWidth:为元素的width+元素的padding+边框的宽度如图:2、offsetLeft、offsetTop、offsetRight、offsetBottom以offsetLeft为例进行说明,在不同的浏览器中其值不同,且与父元素的position属性(relative,absolute,fixed)有关。现分以下几种情况说明:(测试所用的浏览…

    2022年10月21日
  • 西门子plc16进制转10进制_16进制字符串转数字

    西门子plc16进制转10进制_16进制字符串转数字二进制在C#中无法直接表示,我们一般用0和1的字符串来表示一个数的二进制形式。比如4的二进制为“100”。下面介绍C#里面用于进制转换的方法。十进制转换为二进制(int–>string)System.Convert.ToString(d,2);//d为int类型以4为例,输出为100十六进制转换为二进制(int–>string)System.Conver…

  • 浏览器代理服务器没有响应解决方案怎么办_电脑代理服务器无响应

    浏览器代理服务器没有响应解决方案怎么办_电脑代理服务器无响应前几天,为了满足爬虫的需要,我在自己电脑上设置了一个代理IP。在利用代理IP运行爬虫程序一天之后,终于爬够了所需的数据量。但是非常奇怪的是,爬完虫的第二天,我用浏览器就打不开网页了,浏览器一直提示我代理服务器没有响应,或者说是ERR_PROXY_CONNECTION_FAILED这一错误。我刚开始的时候以为是浏览器的问题,但是在更换了许多浏览器之后依然没有用。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号