Taro+VantUI请求拦截处理

这篇具有很好参考价值的文章主要介绍了Taro+VantUI请求拦截处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

请求拦截处理

备注: CONF.baseUrl需要在config->index.js文件中进行配置

代码如下:文章来源地址https://www.toymoban.com/news/detail-528763.html

    import Taro, { Chain } from "@tarojs/taro";
	const { brand } = Taro.getSystemInfoSync();
	const isDevTools = brand === "devtools";
	const IgnoreRoute =[CONF.baseUrl+'/api/user/login/'];
	
	/**
	 * 响应拦截器
	 * @param chain
	 * @returns
	 */
	const responseInterceptor = function (chain: Chain) {
	  const requestParams = chain.requestParams;
	
	  return chain.proceed(requestParams).then((res) => {
	    const {data} = res;
	    // 401身份验证失败
	    if(data.code === 401 && !IgnoreRoute.includes(requestParams.url)){
	      Taro.showToast({
	        title: data.message ,
	        icon: 'error',
	        success:()=>{
	          Taro.redirectTo({
	            url: `/pages/login/index`,
	          });
	        }
	      });
	    }
	    //服务器错误
	    if(data.code===500){
	      Taro.showToast({
	        title: data.message,
	        icon: 'error',
	      });
	    }
	    return res;
	  });
	};
	
	/**
	 * 业务拦截器
	 * 有来接口处理参数,data 统一 {b: string,sign: string, c: string}
	 * @param chain
	 * @returns
	 */
	const interceptor = function (chain: Chain) {
	  const { requestParams } = chain;
	  const { url = "", header } = requestParams;
	  const transferHeader = {
	    "content-type": "application/json",
	    ...header,
	    openid: Taro.getStorageSync("openId"),
	    Authorization: `LAIBAO ${Taro.getStorageSync(TOKEN)}`,
	  };
	  if (
	    ["/api"].find((route) =>
	      url.startsWith(route)
	    )
	  ) {
	    requestParams.header = { ...transferHeader };
	    requestParams.url = `${CONF.baseUrl}${url}`;
	    return chain.proceed(requestParams).then((res) => res);
	  }
	  return chain.proceed(requestParams).then((res) => res);
	};
	
	Taro.addInterceptor(interceptor);
	Taro.addInterceptor(responseInterceptor);
	
	
	export interface ResponseType<T> {
	  code: number;
	  msg: string;
	  data?: T;
	  runtime?: number;
	}
	
	export interface ErrorType {
	  errorCode: number;
	  errorMsg: string;
	}
	
	function httpRequest<T = any, U = any>(option: any): Promise<T> {
	  const start = +new Date();
	  return Taro.request<T, U>(option).then((res: any) => {
	    !isDevTools &&
	      console.log("request time", +new Date() - start, "ms", option?.url,CONF.baseUrl);
	    if (res) {
	      const { code, message } = res?.data;
	      if (code === 200) {
	        !isDevTools && console.warn(option, res.data);
	        return res.data as T;
	      }
	      return { code: code, message: message } as unknown as T;
	    } else {
	      return res as T;
	    }
	  });
	}
	
	export default httpRequest;

到了这里,关于Taro+VantUI请求拦截处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 Taro 开发鸿蒙原生应用 —— 当 Taro 遇到纯血鸿蒙

    在今年 8 月的「2023年华为开发者大会(HDC.Together)」上,华为正式官宣「鸿蒙Next」,这个更新的版本将移除所有的 AOSP 代码,彻底与 Android 切割,使其成为一个完全自主研发的操作系统,这将去掉 40%左右多余的代码,使系统变得更加简洁、流畅。同时,会上也预告了将在明

    2024年02月05日
    浏览(47)
  • 微信小程序+Taro 混编,Taro 使用微信原生 behaviors

    最近有一个小程序项目,因为一些原因项目架构选择了微信小程序原生+Taro 混编的方式进行开发,在开发的过程中发现 Taro 不支持使用原生的 behaviors 特性,因为混编的原因项目当中已有原生页面在使用 behaviors,所以需要一个方案在不影响其他页面的基础上使 Taro 也能使用这

    2024年02月11日
    浏览(45)
  • Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

    1、安装 Taro 脚手架工具 npm install -g @tarojs/cli yarn global add @tarojs/cli 2、taro 初始化项目 taro init taro-app 安装 taro-ui cd taro-app yarn add taro-ui 全局引入taro-ui样式 3、项目路由路径 page 对应项目路径 lazyCodeLoading 组件按需注入 Taro.navigateTo({url: xxx}) 小程序内部跳转 4、全局添加分享功能

    2024年02月04日
    浏览(40)
  • Taro保存图片到手机

    萌新亚历山大啊,搞了一下午,真多坑 downloadFile保存的文件路径后缀有可能不是jpg,保存不了手机上 这一行 const tempFilePath = res.filePath;  // 获取下载的临时文件路径,需要注意别写错 又有新坑 开发版本可以下载,上线点击无反应 解决办法:1、完善一下用户隐私协议 2、配置

    2024年02月14日
    浏览(31)
  • taro使用小记 —— 持续更新

    1、在 taro 中使用 axios taro 3.6 版本已经支持了网络请求库。 需安装插件 @tarojs/plugin-http 使用和注意事项说明: https://www.npmjs.com/package/@tarojs/plugin-http 和平常使用 axios 的方式一致 2、在 taro 中添加全局组件自动引入和方法自动引入 使用 unplugin-vue-components 和 unplugin-auto-import 3、在

    2024年02月09日
    浏览(78)
  • 【taro react】(游戏) ---- 贪吃蛇

    1. 预览 2. 实现思路 实现食物类,食物坐标和刷新食物的位置,以及获取食物的坐标点; 实现计分面板类,实现吃食物每次的计分以及积累一定程度的等级,实现等级和分数的增加; 实现蛇类,蛇类分为蛇头和蛇身,蛇头有方向,蛇身每一节跟着前一节移动; 实现控制器类

    2024年02月10日
    浏览(36)
  • Taro3的编译配置

    taro的编译配置存放在项目根目录下的 config 文件中,有三个文件 index.js 是通用配置 dev.js 是项目开发时的配置 prod.js 是项目打包时的配置 1. 默认配置 2. 配置详情 sourceRoot 源代码存在的目录 类型: string 默认: src outputRoot 打包后的代码存在目录 类型: string 默认: dist design

    2024年02月13日
    浏览(83)
  • taro之小程序持续集成

    Taro 小程序端构建后支持 CI(持续集成)的插件  @tarojs/plugin-mini-ci 。 目前已支持(企业)微信、京东、字节、支付宝、钉钉、百度小程序 功能包括: 构建完毕后自动唤起小程序开发者工具并打开项目 上传代码作为开发版并生成预览二维码 上传代码作为体验版并生成体验二

    2024年02月12日
    浏览(48)
  • Taro UI中的AtTabs

    TaroUI 中的  AtTabs  是一个用于创建标签页(tab)组件的组件。它提供了一种简单的方式来切换显示不同的内容。 AtTabs  的使用方式如下: 首先,引入  AtTabs  组件和必要的样式: 然后,在你的组件中使用  AtTabs  组件: 这里需要传入以下几个参数: current :表示当前选中的

    2024年02月12日
    浏览(29)
  • taro小程序用户头像昵称获取

    微信发布《小程序用户头像昵称获取规则调整公告》之后,无法再使用 getUserProfile 获取用户头像和昵称,因此小程序官方提供了头像昵称填写功能来完善个人资料。 对button添加 open-type=\\\"chooseAvatar\\\" bind:chooseavatar=\\\"onChooseAvatar\\\" 获取头像 对input添加 type=\\\"nickname\\\" 获取昵称 新增一个

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包