使用 axios-miniprogram-adapter 实现 Axios 在小程序中的兼容方案

在开发node.js SDK 时 使用的是axios进行http请求,但是由于小程序环境的特殊性,直接在小程序中使用 Axios 会遇到兼容性问题。本文将介绍如何使用 axios-miniprogram-adapter 插件使 Axios 兼容小程序环境。

解决方案

1. 安装依赖

首先需要安装 axios 和 axios-miniprogram-adapter:

npm install axios axios-miniprogram-adapter

2. 环境检测

我们需要先检测当前运行环境是否为小程序:

/** 各小程序平台全局变量类型 */
declare const wx: { getSystemInfo: Function; [key: string]: any };
declare const my: { getSystemInfo: Function; [key: string]: any };
declare const dd: { httpRequest: Function; [key: string]: any };
declare const tt: { [key: string]: any };

type MiniProgramEnv = 'weixin' | 'alipay' | 'dingtalk' | 'tt' | null;

/**
 * 判断当前运行环境属于哪个小程序平台
 * @returns 'weixin' | 'alipay' | 'dingtalk' | 'tt' | null
 */
export function getMiniProgramEnv(): MiniProgramEnv {
  try {
    if (typeof wx !== 'undefined' && typeof wx.getSystemInfo === 'function') return 'weixin';
    if (typeof my !== 'undefined' && typeof my.getSystemInfo === 'function') return 'alipay';
    if (typeof dd !== 'undefined' && typeof dd.httpRequest === 'function') return 'dingtalk';
    if (typeof tt !== 'undefined') return 'tt';
  } catch (e) {
    console.warn('[getMiniProgramEnv] platform detection error:', e);
  }
  return null;
}

/**
 * 是否运行在任意小程序平台环境中
 */
export const isMiniProgram: boolean = getMiniProgramEnv() !== null;

3. 创建兼容的 Request 类

创建一个封装类,根据环境自动选择适配器:

import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError, InternalAxiosRequestConfig, AxiosAdapter } from 'axios';
import miniprogramAdapter from 'axios-miniprogram-adapter';
import { isMiniProgram } from '../programEnv/index';
export class Request {
   private service: AxiosInstance;

   constructor(config: ClientConfigOptions) {
      this.config = {
         timeout: 10000,
         ...config
      };

      this.service = axios.create({
         baseURL: this.config.baseUrl,
         timeout: this.config.timeout,
         // 关键点:在小程序环境中使用适配器
         adapter: isMiniProgram ? miniprogramAdapter as unknown as AxiosAdapter : undefined,
         headers: {
            'Content-Type': 'application/json',
            ...(this.config.headers || {})
         }
      });

      // 添加请求拦截器
      this.service.interceptors.request.use(
         this._handleRequestIntercept.bind(this),
         (error: AxiosError) => Promise.reject(error)
      );

      // 添加响应拦截器
      this.service.interceptors.response.use(
         this._handleResponseSuccess.bind(this),
         this._handleResponseError.bind(this)
      );
   }

   // ... 其他方法实现
}

4. 使用示例

// 创建请求实例
const request = new Request({...config});

// 发起GET请求
request.get('/user', { id: 1 })
  .then(response => console.log(response))
  .catch(error => console.error(error));

// 发起POST请求
request.post('/user', { name: 'John' })
  .then(response => console.log(response))
  .catch(error => console.error(error));

本系统基于Python环境并整合MediaPipe_Pose框架,设计并实现了一套面向羽毛球专项训练的视频解析平台。该平台的核心能力涵盖动态姿态捕捉、人体关键点标记、动作规范性评估、场地基准线标定以及运动员位移路径分析。在动态姿态捕捉环节,系统可实时处理视频流中的运动员动作,通过计算模型解析其姿势状态,为教练员提供即时反馈以促进技术动作的规范化调整。借助MediaPipe_Pose框架,系统能够精准定位人体21处骨骼关键点,包括上肢的腕、肘、肩关节以及下肢的髋、膝、踝等部位,从而构建完整的运动姿态模型。动作规范性评估模块通过将实时采集的动作数据与预存的标准动作模板进行比对,输出关于动作准确度与规范性的量化评价,帮助运动员在训练过程中及时识别并修正技术偏差,有效提升训练精度与效果。场地基准线标定功能则通过识别羽毛球场的边线、中线等几何参照,为运动员提供清晰的视觉定位辅助,强化其对场地空间结构的感知能力,进而优化其在比赛中的位置判断与反应速度。运动员位移路径分析模块持续追踪训练过程中运动员在场地内的移动轨迹,据此计算其累计移动距离,并解析位移模式与效率。该分析有助于评估运动员的体能分布特点、战术执行效果及耐力水平,为教练员制定个性化训练方案提供数据依据。此外,系统集成了数据可视化与报告生成组件,以图表等形式直观呈现分析结果,便于训练决策的调整与优化。整套系统的开发紧密贴合羽毛球训练的实际需求,通过先进的姿态识别算法与数据处理技术,为运动员与教练团队提供了一套科学、系统的训练辅助工具,显著提升了训练过程的针对性与有效性。相关技术文档与资源材料已随系统提供,以协助用户快速掌握操作流程,并支持进一步的定制化开发。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值