鴻蒙應用(醫院診療系統)開發篇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
?

流程圖:

? ? ? ??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901623.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ADAS高級駕駛輔助系統詳細介紹

ADAS&#xff08;高級駕駛輔助系統&#xff09;核心模塊&#xff0c;通過 “監測→預警→干預” 三層邏輯提升行車安全。用戶選擇車輛時&#xff0c;可關注傳感器配置&#xff08;如是否標配毫米波雷達&#xff09;、功能覆蓋場景&#xff08;如 AEB 是否支持夜間行人&#xff…

Prometheus+Grafana+K8s構建監控告警系統

一、技術介紹 Prometheus、Grafana及K8S服務發現詳解 Prometheus簡介 Prometheus是一個開源的監控系統和時間序列數據庫&#xff0c;最初由SoundCloud開發&#xff0c;現已成為CNCF(云原生計算基金會)的畢業項目?。它專注于實時監控和告警&#xff0c;特別適合云原生和分布式…

MATLAB腳本實現了一個三自由度的通用航空運載器(CAV-H)的軌跡仿真,主要用于模擬升力體在不同飛行階段(初始滑翔段、滑翔段、下壓段)的運動軌跡

%升力體:通用航空運載器CAV-H %讀取數據1 升力系數 alpha = [10 15 20]; Ma = [3.5 5 8 10 15 20 23]; alpha1 = 10:0.1:20; Ma1 = 3.5:0.1:23; [Ma1, alpha1] = meshgrid(Ma1, alpha1); CL = readmatrix(simulation.xlsx, Sheet, Sheet1, Range, B2:H4); CL1 = interp2(…

Day09【基于jieba分詞和RNN實現的簡單中文分詞】

基于jieba分詞和RNN實現的中文分詞 目標數據準備主程序預測效果 目標 本文基于給定的中文詞表&#xff0c;將輸入的文本基于jieba分詞分割為若干個詞&#xff0c;詞的末尾對應的標簽為1&#xff0c;中間部分對應的標簽為0&#xff0c;同時將分詞后的單詞基于中文詞表做初步序列…

Linux-服務器添加審計日志功能

#查看audit軟件是否在運行(狀態為active而且為綠色表示已經在運行) systemctl start auditd #如果沒有在運行的話,查看是否被系統禁用 (audit為0表示被禁用) cat /proc/cmdline | grep -w "audit=0" #修改/etc/default/grub里面audit=0 改為audit=1 #更新GRUB…

uniappx項目上架各手機平臺

前段時間用uniappx開發的App&#xff0c;領導要求要在各個主要手機平臺上上架了&#xff0c;本來不是我的任務&#xff0c;后來其他人沒有空交給我了&#xff0c;上架小白一枚&#xff0c;哭唧唧的自己研究吧&#xff0c;根據領導發的賬號密碼登錄各個平臺上架&#xff0c;花費…

第4次課 前綴和與差分 A

課堂學習 前綴和數組 前1個收購點&#xff1a;3箱 前2個收購點&#xff1a;325箱 前3個收購點&#xff1a;32510箱 以此類推… 數組a存儲10個收購點的箱數。 收購點編號從1~10&#xff0c;數組下標也從1開始使用。 下標0位置直接賦值0 #include<bits/stdc.h> using nam…

MySQL部分總結

mysql學習筆記&#xff0c;如有不足還請指出&#xff0c;謝謝。 外連接&#xff0c;內連接&#xff0c;全連接 外連接&#xff1a;左外、右外 內連接&#xff1a;自己和自己連接 全連接&#xff1a;左外連接右外鏈接 mysql unique字段 unique可以在數據庫層面避免插入相同…

Spring MVC 請求處理流程詳解

步驟1&#xff1a;用戶發起請求 所有請求首先被 DispatcherServlet&#xff08;前端控制器&#xff09;攔截&#xff0c;它是整個流程的入口。 DispatcherServlet 繼承自 HttpServlet&#xff0c;通過 web.xml 或 WebApplicationInitializer 配置映射路徑&#xff08;如 /&…

Vue 高級技巧深度解析

Vue 高級技巧深度解析 mindmaproot(Vue2高級技巧)組件通信EventBusprovide/inject$attrs/$listeners性能優化虛擬DOM優化函數式組件按需加載狀態管理Vuex模塊化持久化存儲嚴格模式高級指令自定義指令動態組件異步組件渲染控制作用域插槽渲染函數JSX支持一、組件通信的進階之道 …

2024年React最新高頻面試題及核心考點解析,涵蓋基礎、進階和新特性,助你高效備戰

以下是2024年React最新高頻面試題及核心考點解析&#xff0c;涵蓋基礎、進階和新特性&#xff0c;助你高效備戰&#xff1a; 一、基礎篇 React虛擬DOM原理及Diff算法優化策略 ? 必考點&#xff1a;虛擬DOM樹對比&#xff08;同級比較、Key的作用、組件類型判斷&#xff09; ?…

Zookeeper單機三節點集群部署(docker-compose方式)

前提: 服務器需要有docker鏡像zookeeper:3.9.3 或能連網拉取鏡像 服務器上面新建文件夾: mkdir -p /data/zk-cluster/{data,zoo-cfg} 創建三個zookeeper配置文件zoo1.cfg、zoo2.cfg、zoo3.cfg,配置文件里面內容如下(三個文件內容一樣): tickTime=2000 initLimit=10 …

面試題之數據庫-mysql高階及業務場景設計

最近開始面試了&#xff0c;410面試了一家公司 針對自己薄弱的面試題庫&#xff0c;深入了解下&#xff0c;也應付下面試。在這里先祝愿大家在現有公司好好沉淀&#xff0c;定位好自己的目標&#xff0c;在自己的領域上發光發熱&#xff0c;在自己想要的領域上&#xff08;技術…

數字內容體驗案例解析與行業應用

數字內容案例深度解析 在零售行業頭部品牌的實踐中&#xff0c;數字內容體驗的革新直接推動了用戶行為模式的轉變。某國際美妝集團通過搭建智能內容中臺&#xff0c;將產品信息庫與消費者行為數據實時對接&#xff0c;實現不同渠道的動態內容生成。其電商平臺首頁的交互式AR試…

4.15 代碼隨想錄第四十四天打卡

99. 島嶼數量(深搜) (1)題目描述: (2)解題思路: #include <iostream> #include <vector> using namespace std;int dir[4][2] {0, 1, 1, 0, -1, 0, 0, -1}; // 四個方向 void dfs(const vector<vector<int>>& grid, vector<vector<bool&g…

【三維重建與生成】GenFusion:SVD統一重建和生成

標題:《GenFusion: Closing the Loop between Reconstruction and Generation via Videos》 來源&#xff1a;西湖大學&#xff1b;慕尼黑工業大學&#xff1b;上海科技大學&#xff1b;香港大學&#xff1b;圖賓根大學 項目主頁&#xff1a;https://genfusion.sibowu.com 文章…

Quipus,LightRag的Go版本的實現

1 項目簡介 奇譜系統當前版本以知識庫為核心&#xff0c;基于知識庫可以快構建自己的問答系統。知識庫的Rag模塊的構建算法是參考了LightRag的算法流程的Go版本優化實現&#xff0c;它可以幫助你快速、準確地構建自己的知識庫&#xff0c;搭建屬于自己的AI智能助手。與當前LLM…

mysql 8 支持直方圖

mysql 8 可以通過語句 ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name WITH 10 BUCKETS; 生產直方圖&#xff0c;解決索引數據傾斜的問題 在之前的mysql5.7的版本上是沒有的 參考&#xff1a; MySQL :: MySQL 8.0 Reference Manual :: 15.7.3.1 ANALYZE TABL…

力扣-hot100(最長連續序列 - Hash)

128. 最長連續序列 中等 給定一個未排序的整數數組 nums &#xff0c;找出數字連續的最長序列&#xff08;不要求序列元素在原數組中連續&#xff09;的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1&#xff1a; 輸入&#xff1a;nums [100,4,200,…

RCEP框架下eBay日本站選品戰略重構:五維解析關稅紅利機遇

2024年RCEP深化實施背景下&#xff0c;亞太跨境電商生態迎來結構性變革。作為協定核心成員的日本市場&#xff0c;其跨境電商平臺正經歷新一輪價值重構。本文將聚焦eBay日本站&#xff0c;從政策解讀到實操路徑&#xff0c;系統拆解跨境賣家的戰略機遇。 一、關稅遞減機制下的…