当前位置: 首页 > news >正文

鸿蒙应用(医院诊疗系统)开发篇2·Axios网络请求封装全流程解析

一、项目初始化与环境准备

1. 创建鸿蒙工程
src/main/ets/  
├── api/  
│   ├── api.ets       # 接口聚合入口  
│   ├── login.ets     # 登录模块接口  
│   └── request.ets   # 网络请求核心封装  
└── pages/  └── login.ets     # 登录页面逻辑  

通过DevEco Studio新建项目,手动添加生成上面目录结构。

2. 安装axios依赖

在终端执行(必须联网):

ohpm install @ohos/axios  

 作用

        引入与Web端兼容的HTTP库,自动处理鸿蒙系统网络接口适配

二、配置网络权限(关键步骤!)

         修改entry/src/main/module.json5 ,添加内容:

"module": {  "requestPermissions": [  {  "name": "ohos.permission.INTERNET"}  ]  
}  

  常见问题

权限未声明 → 应用崩溃且无网络响应;生产环境需补充ohos.permission.NOTIFICATION 等权限说明

三、核心代码分步实现

1. 网络请求核心层 api/request.ets
//封装axios网络请求模块
import axios,{InternalAxiosRequestConfig,AxiosResponse}from '@ohos/axios'export interface Option_Type{method?:stringurl:stringdata?:objectparams?:objectheaders?:object
}interface Request_dataType{code:numbermessage?:stringdata?:object | null
}const  request = axios.create({//使用const声明baseURL:"http://159.75.169.224:3321/v3pz",// API网关地址headers:{Terminal:"h5"}, // 终端标识(告诉服务器是手机还是电脑访问)timeout:15000///增加超时配置,防止长时间阻塞
})
//请求拦截器优化
request.interceptors.request.use((req:InternalAxiosRequestConfig)=>{req.headers['h-token'] = "d43ff2fe3e5b0927df54662af86d4ac8"return req
})function http(options: Option_Type) {// 获取请求方法,默认使用GETlet method = options.method  || "GET" // 若未指定method则赋默认值// 将GET请求的data参数转为paramsif (method.toLowerCase()  === "get") { // 统一转为小写比较options.params  = options.data  // 将data内容转移到params}// 发送请求return request(options) // 调用axios实例发送请求
}//全局响应处理,统一错误逻辑,接收http结果 → 返回业务数据
export default async function test<T>(options: Option_Type): Promise<T> {// 发送请求并等待响应let result: AxiosResponse<Request_dataType> = await http(options) // 异步等待请求完成// 解构响应数据let res = result.data       // 获取响应主体数据let code = res.code         // 提取状态码console.log(" 输入obj", JSON.stringify(res))  // 开发调试日志console.log("[DEBUG]  响应原始数据:", result); // 打印完整响应对象console.log("[INFO]  解析后的状态码:", res.code);// 状态码判断if (code=== 10000) {return res.data  as T               // 成功时返回数据} else if (code === -2 && res.message  === 'token错误') {throw new Error(res.message)        // 特定错误处理} else {throw new Error(res.message)        // 通用错误处理}}
2. 登录接口层 api/login.ets
//数据模型定义,接口封装
import request from './request'
// 定义登录接口返回数据类型
export interface return_login_type{token:string,userInfo:userInfo
}
// 用户基础信息实体类
export interface userInfo{avatar:string,name:string
}
// 登录请求参数接口
interface login_type{passWord:stringuserName:string
}export function login_submit(data:login_type){return request<return_login_type>({//调用request接口url:'./login' ,// 接口路径method:'post',data})
}
3. 接口聚合层 api/api.ets
// 📎 统一导出所有业务接口(便于模块化管理)  
export * from './login';  
// 后续可添加:  
// export * from './user';  
// export * from './order';  

4. 视图层 pages/login.ets

//页面周期控制,UI框架集成
import { login_submit } from '../api/api';@Entry
@Component
struct login{onPageShow(): void {login_submit({//调用了api/login_submit接口// 模拟用户登录(硬编码账号密码存在安全风险)userName:"18993391234",passWord:"123456"})}build(){}
}


注册账号:http://159.75.169.224:3322

注册后填写信息到代码。

在pages\login.ets使用previewer,得到调试信息

04-16 22:06:26.302   33376-34256   A0c0d0/JSAPP                                          I     输入obj {"code":10000,"message":"success","data":{"token":"00a688216d7c1858fc1b4d3da6a36a8c","userInfo":{"avatar":"http://159.75.169.224:5500/avatar.jpeg","name":"admin"}}}
04-16 22:06:26.302   33376-34256   A0c0d0/JSAPP                                          I     [DEBUG]  响应原始数据: [object Object]
04-16 22:06:26.302   33376-34256   A0c0d0/JSAPP                                          I     [INFO]  解析后的状态码: 10000
 

流程图:

        

相关文章:

鸿蒙应用(医院诊疗系统)开发篇2·Axios网络请求封装全流程解析

一、项目初始化与环境准备 1. 创建鸿蒙工程 src/main/ets/ ├── api/ │ ├── api.ets # 接口聚合入口 │ ├── login.ets # 登录模块接口 │ └── request.ets # 网络请求核心封装 └── pages/ └── login.ets # 登录页面逻辑…...

重新定义“边缘”:边缘计算如何重塑人类与数据的关系

在数字化浪潮中&#xff0c;云计算曾是科技界的宠儿&#xff0c;但如今&#xff0c;边缘计算正在悄然改变游戏规则。它不仅是一种技术进步&#xff0c;更是对人类与数据关系的一次深刻反思。本文将探讨边缘计算如何从“中心化”走向“分布式”&#xff0c;以及它如何在效率、隐…...

Flink CDC 出现错误码 1236 和 SQL 状态 HY000 的原因及解决方法

Flink CDC 出现错误码 1236 和 SQL 状态 HY000 的原因及解决方法 常见原因 server-id 冲突:当多个 Flink CDC 任务连接同一个 MySQL 实例,且使用了相同的 server-id 时,会导致该冲突。因为 MySQL 服务器通过 server-id 来区分不同的从服务器,如果多个 Flink CDC 任务使用相…...

如何解除Excel只读状态?4种方法全解析

在日常办公中&#xff0c;我们经常会遇到Excel文件被设置为只读模式的情况。只读模式可以防止文件被意外修改&#xff0c;但在需要编辑时&#xff0c;解除只读模式就显得尤为重要。下面小编分享退出Excel只读方式的4种方法&#xff0c;让你能够轻松编辑工作表。 方法1&#xf…...

深度学习与 Flask 应用常见问题解析

在深度学习和 Flask 应用开发过程中&#xff0c;我们常常会遇到一些关键的知识点和容易混淆的问题。下面我们就来对这些问题进行详细的解析。 一、卷积神经网络&#xff08;CNN&#xff09;常用层 在定义卷积神经网络时&#xff0c;有一些常用的层&#xff1a; Conv2D&#x…...

零浪费,最高效率:通往0%废品率的道路

在工业自动化领域&#xff0c;努力实现废品率为 0% 是最大的挑战之一。这意味着不生产任何有缺陷的产品 —— 从而减少浪费、降低成本&#xff0c;并提高客户满意度。尽管实现这一目标颇具雄心壮志&#xff0c;但企业可以采取几个步骤来改进自身流程&#xff0c;以达成这一目标…...

【c++深入系列】:new和delete运算符详解

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; “生活不会向你许诺什么&#xff0c;尤其不会向你许诺成功。它只会给你挣扎、痛苦和煎熬的过程。但只要你坚持下去&#xff0c;终有一天&…...

基础(测试用例:介绍,测试用例格式,案例)

目录 测试用例介绍 测试用例编写格式 案例 测试用例介绍 用例&#xff1a;用户使用软件的案例场景 测试用例&#xff1a;是为测试项目而设计的测试执行文档 测试用例的作用&#xff1a; 防止漏测是实施测试的标准可以作为测试工作量的评估 测试用例编写格式 用例编号 用例…...

MCP协议,.Net 使用示例

服务器端示例 基础服务器 以下是一个基础的 MCP 服务器示例&#xff0c;它使用标准输入输出&#xff08;stdio&#xff09;作为传输方式&#xff0c;并实现了一个简单的回显工具&#xff1a; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.H…...

Node.js 数据库 事务 项目示例

1、参考&#xff1a;JavaScript语言的事务管理_js 函数 事务性-CSDN博客 或者百度搜索&#xff1a;Nodejs控制事务&#xff0c; 2、实践 2.1、对于MySQL或MariaDB&#xff0c;你可以使用mysql或mysql2库&#xff0c;并结合Promise或async/await语法来控制事务。 使用 mysql2…...

【AI插件开发】Notepad++ AI插件开发实践:支持多平台多模型

引言 上篇文章我们的Notepad插件介绍到Dock窗口集成&#xff0c;本篇将继续完善插件功能&#xff0c;主要包括两个部分&#xff1a; 支持多平台、多模型支持多种授权验证、接口类型 一、多平台 原先的配置项很简单&#xff1a; // PluginConf.h class PlatformConf { publ…...

微信小程序数字滚动效果

效果图 .wxml <view class"container"><view class"container-num" wx:for"{{number}}" wx:key"index"><view class"num-container" style"--h:{{h}}px;--y:{{-item * h }}px;"><view wx:f…...

wx219基于ssm+vue+uniapp的教师管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

Python 注释进阶之Google风格

文章目录 1. Google 风格 Docstring 的核心特点2. Google 风格的基本结构3. 编写规则和注意事项4. 最常用的 Google 风格 Docstring 示例示例 1&#xff1a;普通函数 示例 2&#xff1a;带默认参数和可变参数的函数示例 3&#xff1a;类示例 4&#xff1a;生成器函数示例 5&…...

写测试文档时,需要的环境配置怎么查看

操作系统 cat /etc/os-releaseCPU信息 lscpu 内存 sudo dmidecode --type memory | grep -E "Size:|Type:|Speed:"硬盘 列出当前系统中 所有块设备&#xff08;Block Devices&#xff09; 的信息&#xff0c;并显示指定列&#xff08;-o 参数&#xff09; lsblk…...

强化学习的数学原理(十)actor-critic 方法

由于全文太长&#xff0c;只好分开发了。(已完结&#xff01;在专栏查看本系列其他文章&#xff09; 个人博客可以直接看全文~ 本系列为在学习赵世钰老师的“强化学习的数学原理” 课程后所作笔记。 课堂视频链接https://www.bilibili.com/video/BV1sd4y167NS/ 第十章 acto…...

多个定时器同时工作时,会出现哪些常见的bug ,如何解决??(定时任务未实时更新但刷新后正常的问题分析)

1. 定时器冲突与覆盖 问题&#xff1a;后设置的定时器可能覆盖先前的定时器&#xff0c;导致前一个定时器失效 原因&#xff1a;未正确管理定时器ID或未清除前一个定时器 2. 性能问题 内存泄漏&#xff1a;未清除不再需要的定时器会导致内存占用不断增加 CPU过载&#xff1a…...

代码随想录算法训练营day5(哈希表)

华子目录 有效的字母异位词思路 有效的字母异位词 https://leetcode.cn/problems/valid-anagram/description/ 思路 使用哈希表&#xff0c;这里哈希表使用数组先申请一个26空间的大小的数组遍历第一个字符串&#xff0c;记录每个字符出现的次数1遍历第二个字符串&#xff0c…...

Python(17)Python字符编码完全指南:从存储原理到乱码终结实战

目录 背景介绍一、字符编码核心原理1. 计算机存储本质2. Python3的编码革命3. 主流编码格式对比 二、编码转换核心方法1. 编码&#xff08;Encode&#xff09;过程2. 解码&#xff08;Decode&#xff09;过程3. 错误处理策略 三、文件操作编码实战1. 文本文件读写2. 二进制模式…...

Node.js 文件读取与复制相关内容

Node.js 文件读取与复制相关内容的系统总结&#xff0c;包括 同步读取、异步读取、流式读取、复制操作、两者对比及内存测试。 &#x1f9e9; 一、Node.js 文件读取方式总结 Node.js 使用 fs&#xff08;文件系统&#xff09;模块进行文件操作&#xff1a; 1. 同步读取&#…...

大数据面试问答-HBase/ClickHouse

1. HBase 1.1 概念 HBase是构建在Hadoop HDFS之上的分布式NoSQL数据库&#xff0c;采用列式存储模型&#xff0c;支持海量数据的实时读写和随机访问。适用于高吞吐、低延迟的场景&#xff0c;如实时日志处理、在线交易等。 RowKey&#xff08;行键&#xff09; 定义&#xf…...

jupyter 文件浏览器,加强版,超好用,免费exe

第一步&#xff1a;github搜索 lukairui的 jupyter-viewer-plus 仓库 第二步&#xff1a; git clone 到本地。 解压zip包 第三步&#xff1a; 进入压缩包&#xff0c;第一次双击打开jupyter-viewer-plus.exe运行&#xff0c;第一次运行后&#xff0c;界面上有一个“设为…...

【AI工具】用大模型生成脑图初试

刚试用了一下通过大模型生成脑图&#xff0c;非常简单&#xff0c;记录一下 一、用大模型生成脑图文件 关键&#xff1a;存在markdown文件 举例&#xff1a;使用Deepseek&#xff0c;输入问题&#xff1a;“针对大模型的后训练&#xff0c;生成一个开发计划&#xff0c;用ma…...

数据结构-树与二叉树

一、树的定义与基本术语 1.1 树的定义 树&#xff08;Tree&#xff09;是一种非线性的数据结构&#xff0c;它是由 n&#xff08;n ≥ 0&#xff09;个有限节点组成的集合。如果 n 0&#xff0c;称为空树&#xff1b;如果 n > 0&#xff0c;则&#xff1a; 有一个特定的节…...

STL_unordered_map_01_基本用法

&#x1f44b; Hi, I’m liubo&#x1f440; I’m interested in harmony&#x1f331; I’m currently learning harmony&#x1f49e;️ I’m looking to collaborate on …&#x1f4eb; How to reach me …&#x1f4c7; sssssdsdsdsdsdsdasd&#x1f383; dsdsdsdsdsddfsg…...

ARCGIS国土超级工具集1.5更新说明

ARCGIS国土超级工具集V1.5版本更新说明&#xff1a;因作者近段时间工作比较忙及正在编写ARCGISPro国土超级工具集&#xff08;截图附后&#xff09;的原因&#xff0c;故本次更新为小更新&#xff08;没有增加新功能&#xff0c;只更新了已有的工具&#xff09;。本次更新主要修…...

主流物理仿真引擎和机器人/强化学习仿真平台对比

以下是当前主流的物理仿真引擎和机器人/强化学习仿真平台的特点和适用场景&#xff0c;方便根据需求选择&#xff1a; &#x1f9e0; NVIDIA 系列 ✅ Isaac Lab v1.4 / v2 特点&#xff1a; 基于 Omniverse Isaac Sim&#xff0c;属于高端视觉机器人仿真框架v2 更加模块化&a…...

STM32 HAL库内部 Flash 读写实现

一、STM32F407 内部 Flash 概述 1.1 Flash 存储器的基本概念 Flash 存储器是一种非易失性存储器&#xff0c;它可以在掉电的情况下保持数据。STM32F407 系列微控制器内部集成了一定容量的 Flash 存储器&#xff0c;用于存储程序代码和数据。Flash 存储器具有擦除和编程次数的…...

C++学习:六个月从基础到就业——面向对象编程:构造函数与析构函数

C学习&#xff1a;六个月从基础到就业——面向对象编程&#xff1a;构造函数与析构函数 本文是我C学习之旅系列的第十篇技术文章&#xff0c;主要讨论C中构造函数与析构函数的概念、特点和使用技巧。这些是C对象生命周期管理的关键组成部分。查看完整系列目录了解更多内容。 引…...

dfs二叉树中的深搜(回溯、剪枝)--力扣129、814、230、257

目录 1.1题目链接&#xff1a;129.求根节点到叶结点数字之和 1.2题目描述&#xff1a;给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 1.3解法(dfs-前序遍历)&#xff1a; 2.1题目链接&#xff1a;814.二叉树剪枝 2.2题目描述&…...

Python Selenium 一小时速通教程

Python Selenium 一小时速通教程 实战案例 一、环境配置&#xff08;10分钟&#xff09; 安装Python 确保已安装Python 3.x&#xff08;官网下载&#xff09;。 安装Selenium 在终端运行&#xff1a; pip install selenium下载浏览器驱动 Chrome&#xff1a;访问 ChromeDriv…...

通过GO后端项目实践理解DDD架构

最近在工作过程中重构的项目要求使用DDD架构&#xff0c;在网上查询资料发现教程五花八门&#xff0c;并且大部分内容都是长篇的概念讲解&#xff0c;晦涩难懂&#xff0c;笔者看了一些github上入门的使用DDD的GO项目&#xff0c;并结合自己开发中的经验&#xff0c;谈谈自己对…...

MybatisPlus最新版分页无法使用

在使用分页的时候发现分页拦截器关键API会报错&#xff0c;其实根本原因是在之前只需要导入一个mybatisplus依赖&#xff0c;而现在分页似乎被单独分离出来了&#xff0c;需要额外导入新依赖使其支持 ​ <dependency><groupId>com.baomidou</groupId><art…...

【Android学习记录】工具使用

文章目录 一. 精准找视图资源ID1. 准备工作2. 使用 uiautomator 工具2.1. 获取设备的窗口内容2.2. Pull XML 文件2.3. 查看 XML 文件 3. 直接使用 ADB 命令4. 使用 Android Studio 的 Layout Inspector总结 二. adb shell dumpsys activity1. 如何使用 ADB 命令2. 输出内容解析…...

youtube视频和telegram视频加载原理差异分析

1. 客户侧缓存与流式播放机制​​ 流式视频应用&#xff08;如 Netflix、YouTube&#xff09;通过​​边下载边播放​​实现流畅体验&#xff0c;其核心依赖以下技术&#xff1a; ​​缓存预加载​​&#xff1a;客户端在后台持续下载视频片段&#xff08;如 DASH/HLS 协议的…...

在机器视觉检测中为何选择线阵工业相机?

线阵工业相机&#xff0c;顾名思义是成像传感器呈“线”状的。虽然也是二维图像&#xff0c;但极宽&#xff0c;几千个像素的宽度&#xff0c;而高度却只有几个像素的而已。一般在两种情况下使用这种相机&#xff1a; 1. 被测视野为细长的带状&#xff0c;多用于滚筒上检测的问…...

lwip记录

Index of /releases/lwip/ (gnu.org) 以太网(Ethernet)是互联网技术的一种&#xff0c;由于它是在组网技术中占的比例最高&#xff0c;很多人 直接把以太网理解为互联网。 以太网是指遵守 IEEE 802.3 标准组成的局域网&#xff0c;由 IEEE 802.3 标准规定的主要是位于 参考模…...

Redis清空缓存

尽管redis可以设置ttl过期时间进行指定key的定时删除&#xff0c;但是在某些场景下&#xff0c;比如&#xff1a; 测试时需要批量删除指定库下所有库下所有的数据&#xff0c;则会涉及到缓存清除的话题。 如下为具体的操作及说明&#xff1a; 场景类型操作指令清空当前库下所有…...

WPF 依赖注入启动的问题

原因是在App.xaml 设置了 StartupUri“MainWindow.xaml” 1.依赖注入后启动的主窗体存在无参构造 程序正常启动&#xff0c;但是主窗体界面会弹出2个窗体。 2.依赖注入后启动的主窗体存在有参构造 报错...

Arcgis经纬线标注设置(英文、刻度显示)

在arcgis软件中绘制地图边框&#xff0c;添加经纬度度时常常面临经纬度出现中文&#xff0c;如下图所示&#xff1a; 解决方法&#xff0c;设置一下Arcgis的语言 点击高级--确认 这样Arcgis就转为英文版了&#xff0c;此时在来看经纬线刻度的标注&#xff0c;自动变成英文...

【电子通识】案例:电缆的安装方式也会影响设备的可靠性?

背景 在日常生活中&#xff0c;我们常常会忽略一些看似微不足道的细节&#xff0c;但这些细节有时却能决定设备的寿命和安全性。比如&#xff0c;你知道吗&#xff1f;一根电缆的布置方式&#xff0c;可能会决定你的设备是否会因为冷凝水而损坏。 今天&#xff0c;我们就来聊聊…...

房屋装修费用预算表:45594 =未付14509 + 付清31085【时间:20250416】

文章目录 引言I 房屋装修费用预算表II 市场价参考防水搬运3000III 装修计划整体流程进度细节国补IV 付款凭证(销售单)伟星 PPR +PVC+太阳线+地漏=6500入户门设计通铺大板瓷砖 | 湿贴 3408(地)+3600(加)+5209(墙)=12217元门头铁空调引言 关注我,发送【装修记账】获取预…...

Python文件操作完全指南:从基础到高级应用

目录 一、文件基础概念 1.1 什么是文件&#xff1f; 1.2 文件的存储方式 文本文件 二进制文件 二、Python文件操作基础 2.1 文件操作三步曲 2.2 核心函数与方法 2.3 文件读取详解 基本读取示例 文件指针机制 2.4 文件打开模式 写入文件示例 2.5 高效读取大文件 三…...

03(总)-docker篇 Dockerfile镜像制作(jdk,jar)与jar包制作成docker容器方式

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.2 上文传送门 2. docker镜像制作一: jdk2.1 制作jdk镜像2.1.1 准备工作2.1.2 jdk镜像的Dockerfile2.1.3 基于Dockerfile构建镜像2.1.4 docker使用镜像运行容器2.1.5 进入jdk1.8容器内测试 3. docker镜像制作二: java镜像(jar包)…...

CUDA的安装

打开nvidia控制面板 找到组件 打开 CUDA Toolkit Archive | NVIDIA Developer 下载CUDA...

四六级听力调频广播有线传输无线覆盖系统:弥补单一发射系统安全缺陷,构建稳定可靠听力系统平台

四六级听力调频广播有线传输无线覆盖系统:弥补单一发射系统安全缺陷&#xff0c;构建稳定可靠听力系统平台 北京海特伟业科技有限公司任洪卓发布于2025年4月16日 随着英语四六级考试的规模不断扩大&#xff0c;听力考试部分的设备可靠性问题日益凸显。传统的无线发射系统存在…...

信创服务器-大国崛起,信创当道!

信创产业是数据安全、网络安全的基础&#xff0c;也是新基建的重要组成部分。在政策的推动下&#xff0c;2020-2022 年&#xff0c;中国信创服务器出货量整体呈现出快速增长的趋势&#xff0c;其中党政、电信、金融等领域采购频次高&#xff0c;单次采购量大&#xff0c;是中国…...

【仿Mudou库one thread per loop式并发服务器实现】SERVER服务器模块实现

SERVER服务器模块实现 1. Buffer模块2. Socket模块3. Channel模块4. Poller模块5. EventLoop模块5.1 TimerQueue模块5.2 TimeWheel整合到EventLoop5.1 EventLoop与线程结合5.2 EventLoop线程池 6. Connection模块7. Acceptor模块8. TcpServer模块 1. Buffer模块 Buffer模块&…...

冒泡与 qsort 排序策略集

今天我们要学习两种排序方法&#xff0c;分别是冒泡排序和qsort函数排序,冒泡排序相对qsort函数排序要简单一点&#xff0c;更易于理解。 1.冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它通过重复遍历元素列并比较相邻元素来实现排…...

【Linux】第七章 控制对文件的访问

目录 1. 什么是文件系统权限&#xff1f;它是如何工作的&#xff1f;如何查看文件的权限&#xff1f; 2. 解释‘-rw-r--r--’这个字符串。 3. 使用什么命令可以更改文件和目录的权限&#xff1f;写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。 4. 如何修改文…...