鸿蒙应用网络请求封装:从零搭建一个好用的 Http 请求层
做鸿蒙应用开发时,几乎每个页面都要和服务器打交道:登录、拉列表、提交表单。一开始我图省事,在每个页面里直接写请求,写了几个页面就发现问题很多:地址到处散落、token 每个地方手动拼、错误处理各写一套,改一个接口前缀要全文搜索。后来我把请求层抽成一个统一的工具类,体验好了很多,这篇笔记记录这套封装的思路和踩过的坑。
一、先定一层薄薄的封装
核心是只暴露一个 request 方法,内部做三件事:拼完整地址、注入公共请求头、统一解析响应。业务代码只关心调哪个接口、传什么参数、拿到什么数据。响应体约定为统一结构,成功码才算业务成功,非成功直接抛错,页面层只处理成功和失败两种情况。
二、token 与 401 处理
登录成功后把 token 存进 Preferences,请求前读出来放到请求头里。容易踩的坑是 token 过期:接口返回 401 时,在封装层统一清除本地 token 并跳转登录页,而不是让每个页面各自判断。登录接口本身不应带 token,封装时要留跳过鉴权的开关,否则登录请求会带着旧 token 被后端拒绝。
三、错误处理要分层
网络错误和业务错误要分开。超时、无网络属于网络错误,提示“请检查网络后重试”;业务错误直接展示后端返回的提示,不要把原生错误堆栈弹给用户。失败的 GET 请求可以重试一次,但提交订单这类写请求千万别自动重试,否则可能重复下单。
四、联调时的两个小坑
一是明文 HTTP:开发阶段后端常是 http 地址,HarmonyOS 默认禁止明文传输,需要在配置中声明允许。二是 BaseUrl 不要写死在代码里,集中放到配置类管理,开发、测试环境切换时只改一处。
这套封装写完后,新增接口基本就是定义方法名加参数,页面代码干净了很多。网络层看起来不起眼,却是应用里复用率最高的部分,花半天把它收拾好,后面能省下很多返工。
- 点赞
- 收藏
- 关注作者
评论(0)