uniapp微信小程序使用axios(vue3+axios+ts版)

版本号

"vue": "^3.2.45",

 "axios": "^1.4.0",

 "axios-miniprogram-adapter": "^0.3.5",

安装axios及axios适配器,适配小程序

yarn add axios axios-miniprogram-adapter

使用axios

utils创建utils/request.ts文件

import axios from "axios"
import type { AxiosAdapter, AxiosInstance, AxiosPromise, AxiosRequestConfig, AxiosResponse } from "axios";
import mpAdapter from "axios-miniprogram-adapter";
axios.defaults.adapter = mpAdapter as anyinterface Result<T = any> {code: number | string;msg: string;data: T;
};/* declare module 'axios' {//如遇到request()方法里的retuen报类型错误,放开这段注释采用这种形式定义返回类型,将上方的Result接口注释interface AxiosResponse<T = any> {code: number | string;msg: string;data: T;}type Result<T = any> = AxiosResponse<T>;
} */// 导出Request类,可以用来自定义传递配置来创建实例
class HttpRequest {baseURL: string;timeout: number;constructor() {this.baseURL = import.meta.env.VITE_BASE_URL;this.timeout = 60000}request<T = any>(options: AxiosRequestConfig): Promise<Result<T>> {// axios 实例const instance: AxiosInstance = axios.create()this.setInterceptors(instance)const opts = this.mergeOptions(options)return instance(opts)}get<T = any>(url: string, data?: any, outHeaders = {}): Promise<Result<T>> {return this.request<T>({method: 'get',url,params: { ...data }, // get参数可以直接展开headers: {}})}post<T = any>(url: string, body = {}, outHeaders = {}): Promise<Result<T>> {let data = {body,header: {}}return this.request<T>({method: 'post',url,data, // post要求必须传入data属性})}mergeOptions(options: AxiosRequestConfig) {//console.log('合并参数', options)return {baseURL: this.baseURL,timeout: this.timeout,...options}}// 设置拦截器setInterceptors(instance: AxiosInstance) {// 请求拦截器instance.interceptors.request.use((config) => {uni.showLoading({title: '加载中...',mask: true});// 一般会请求拦截里面加token,用于后端的验证/*       const token = localStorage.getItem("token")config!.headers!.Authorization = tokenconfig.headers = Object.assign(config.headers, { ...config.headers, token }); */return config},(err: any) => {console.log(err, '请求拦截报错');uni.hideLoading();return Promise.reject(err);})// 响应拦截器instance.interceptors.response.use((res: AxiosResponse) => {//res为AxiosResponse类型,含有config\data\headers\request\status\statusText属性console.log(res);uni.hideLoading();let { status, data } = resif (status === 200) {// return Promise.resolve(data)return data} else {}},err => {console.log('axios报错', err)uni.hideLoading(); // 立即关闭加载框return Promise.reject(err)})}
}
// 默认导出Request实例
export default new HttpRequest()

src目录下创建src/api/config文件夹

config文件夹中创建home.ts文件,首页的接口都放在里面统一管理

export default {getHomeData: "/frontpage",
}

 和config文件夹同级创建home.ts文件,统一管理请求接口的方法


import axios from '@/utils/request'
import home from './config/home'export const getHomeData = () => axios.get(home.getHomeData) //无参使用方式
export const getHomeData = options:any => axios.get(home.getHomeData, options) //有参使用方式 options参数可以自行统一定义

在页面中使用,home.vue文件

<template><view class="content"></view>
</template><script setup lang="ts">
import { onMounted, ref } from 'vue'
import { getHomeData } from '@/api/home'onMounted(() => {homeData()
})const homeData = async () => {const { data } = await getHomeData()console.log(data, '首页数据+++++++++')
}
</script><style lang="scss"></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7个银行的软件测试项目实战,别再说简历项目不知道怎么写了

目录 前言 项目描述1&#xff1a;上海华瑞银行直连票据项目 项目描述2&#xff1a;平安金服风控中台系统 项目描述3&#xff1a;众安创展APP项目 项 目4&#xff1a; 招商银行VTM自助渠道服务系统 项 目5&#xff1a;招商银行票据支付 项 目6&#xff1a; 平安银行风控系…

Virus Total 曝数据泄露大事件:涉及多国情报部门

The Hacker News 网站披露&#xff0c;可疑文件和病毒在线检测平台 VirusTotal 曝出数据泄露事故&#xff0c;一名员工无意中将部分 VirusTotal 注册客户的姓名、电子邮件地址等敏感数据信息上传到了恶意软件扫描平台&#xff0c;此举导致约 5600 名用户数据泄露。 据悉&#x…

《AI大模型:现状与发展,从ChatGPT到xAI的探索》

《AI大模型&#xff1a;现状与发展&#xff0c;从ChatGPT到xAI的探索》 自从GPT-3.5和ChatGPT在2022年底横空出世以来&#xff0c;AI大模型的发展和应用在全球范围内呈现出快速发展的趋势。这种趋势源于AI技术在理解、模拟和预测方面的巨大潜力&#xff0c;也源于人类对于更高效…

【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(备份+恢复篇)

深入探索和分析MySQL数据库的数据备份和恢复实战开发指南 MySQL数据库备份全量备份全量备份应用场景 增量备份binlogbinlog主要作用binlog的作用主要有两个方面 开启binlog日志功能要开启MySQL的binlog日志步骤 mysqlbinlogmysqlbinlog的使用案例 全量备份与增量备份结合按天全…

安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用后台模块SessionCookieToken身份验证唯一性

文章目录 开发环境数据导入-mysql架构&库表列数据库操作-mysqli函数&增删改查数据接收输出-html混编&超全局变量第三方插件引用-js传参&函数对象调用身份验证-Cookie使用身份验证-Session使用唯一性判断-Token使用具体安全知识点&#xff1a;Cookie和Session都…

ansible 批量设置主机名

修改之前的主机名 # hostname -i ::1 127.0.0.1 编写hosts文件 在任意位置编写hosts文件 # cat hosts [test] ailog4x10.221.206.227 hostnamepaas-10-221-206-227 ansible_python_interpreter/usr/bin/python3 ansible_ssh_host10.221.206.227 ansible_ssh_port22 ansible…

复习java基础

复习一天有点忘了的知识&#xff1a; 结构化编程 结构化程式设计(英语:Structured programming)是1960年代开始发展起来的一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构来取代传统的goto。 指导思想 自顶向下、逐步求精、模块化 编程过程 流程图是…

Django配置数据库ORM基础字段选项增删改查F对象Q对象聚合查询原生数据库操作SQL注入

前置条件 MySQL已安装安装pip3 install mysqlclient. #是对C语言操作MySQL数据库的一个简单封装支持Python3安装不上mysqlclient的话&#xff0c;pip3 install pymysql #纯Python实现的一个驱动. 用pymysql的话需要伪装成mysqlclient&#xff08;因为Django源代码要求mysqlcli…

VUE学习六之绑定样式及条件属性

绑定样式及条件属性 绑定样式条件属性 绑定样式 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>绑定样式</title><style>.basic{width: 400px;height: 100px;border: 1px solid black;}.happy{border: 4px…

Appium 安卓环境的配置

目录 前言&#xff1a; 环境准备 写个脚本玩玩 前言&#xff1a; 在使用Appium进行安卓自动化测试之前&#xff0c;需要配置相应的安卓环境。 环境准备 为了避免走弯路&#xff0c;我们先要确保三点&#xff1a; Android SDK API > 17 (Additional features require …

【Python爬虫与数据分析】进阶语法

目录 一、异常捕获 二、迭代器 三、拆包、聚合、映射 四、filter() 函数 五、匿名函数 六、闭包 七、装饰器 一、异常捕获 异常捕获可增强程序的健壮性&#xff0c;即程序在遇到遇到异常的时候并不会做中断处理&#xff0c;而是会将异常抛出&#xff0c;由程序员来分析…

Kafka 入门到起飞 - 核心概念(术语解释)

在kafka之旅&#xff0c;我们会大量讨论Kafka中的术语&#xff0c;那么就让我们先来了解一下这些核心概念 消息(Message)&#xff1a; kafka的数据单元称为消息&#xff0c;相当于DB里的一行数据或一条记录 消息由字节数组组成 批次&#xff1a; 生产者组一批数据再向kafka推送…

C++编程(四) —— OOP

文章目录 前言一、this指针二、构造和析构三、深拷贝浅拷贝浅拷贝深拷贝 编程实践 前言 什么是OOP思想&#xff1f; OOP语言的四大特征&#xff1a; 抽象&#xff0c;封装/隐藏&#xff0c;继承&#xff0c;多态 一、this指针 this指针》类》很多对象 一套成员方法是如何处…

网络层数据链路层协议—网络

文章目录 1.网络层协议—IP协议1.1协议字段 2.数据链路层协议2.1以太网2.2以太网帧2.3mtu2.4ARP协议 1.网络层协议—IP协议 1.1协议字段 &#xff08;1&#xff09;16位标识&#xff1a;mtu规定了需要数据报分片的大小&#xff0c;16位标识来标识原始数据 &#xff08;2&…

键盘控制鼠标移动

记录一下&#xff0c; windows用autohotkeys crtl 方向键 / 空格 &#xff1a;移动鼠标 / 鼠标左击 crtl shift 方向键 / 空格&#xff1a; 快速移动鼠标 / 鼠标右击 ^up::MouseMove,0,-75,0,r ^up::MouseMove,0,-15,0,r ^down::MouseMove,0,75,0,r ^down::MouseMove,0,…

深入学习 Redis - 深挖经典数据类型之 string

目录 前言 一、string 类型 1.1、操作命令 set / get &#xff08;设置 / 获取&#xff09; mset / mget&#xff08;批量 > 设置 / 获取&#xff09; setnx / setex / psetex &#xff08;设置时指定不同方式&#xff09; incr / incrby / decr / decrby/ incrbyfloat…

船舶中压配电板应用弧光保护,可解决母排故障短路问题,对于提高船舶电站的安全性、稳定性,降低经济损失具有重要意义。-安科瑞黄安南

摘要&#xff1a;船舶中压配电板弧光故障导致的设备损坏和停电事故&#xff0c;不仅会造成较大的经济损失&#xff0c;而且严重影响船舶电站的安全稳定运行&#xff0c;威胁船舶电站操作人员的安全。弧光保护是基于电力系统开关柜发生弧光故障时而设计的一套母线保护系统&#…

如何让C++代码也弥漫着炎热的感觉

写一段非常炎热的C代码 当然&#xff0c;这里有一个简单的炎热的C代码示例&#xff0c;它演示了一个循环打印输出的程序&#xff1a; #include <iostream> #include <ctime>int main() {std::cout << "炎热的夏日&#xff0c;热力四溢&#xff01;&quo…

分布式存储系统(Ceph)基础

存储基础 存储设备 DAS&#xff1a;IDE、SATA、SCSI、SAS、USBNAS&#xff1a;NFS、CIFSSAN&#xff1a;SCSI、FC SAN、iSCSI 存储内容包括元数据和数据&#xff0c;名称节点&#xff08;NameNode&#xff09;存放元数据&#xff0c;数据节点&#xff08;DataNode&#xff09…

【布局优化】基于遗传算法的车间布局优化 车间设施布局优化【Matlab代码#50】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 车间布局优化2. 基于GA的布局优化模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 车间布局优化 车间设施布置的规划一直是工业工程领域不断研究和探索的内容&am…