请求场景模型(RSM)
什么是请求场景模型
请求场景模型是以客户端视角的,描述客户端从触发请求意图到接收请求结果的抽象模型,分别由请求时机、请求行为、请求事件以及响应管理四个阶段组成。例如在进行一次请求时经常需要思考以下问题,
- 什么时候发出请求;
- 是否要展示请求状态;
- 是否需要对请求进行 失败重试;
- 要如何加工响应数据;
- 是否需要对请求参数加密;
- 是否要对高频使用的响应数据做缓存;
- 如何进行跨页面操作数据;
- 弱网或断网环境下需要如何处理请求;
- ...
fetch
或axios
往往更专注于如何与服务端交互,但对于上面的问题我们总是需要自己处理,这些有利于应用性能和稳定性的功能,总会让程序员们编写出低维护性的代码。请求场景模型就是从准备请求到响应数据加工完毕的所有环节进行抽象,从而覆盖以前端为视角的,整个 CS 交互生命周期的模型。alova
就是一个以请求场景模型的库,它是对axios
等请求库的一种补充,而非替代品。
CS 交互:泛指所有客户端类型和服务端的数据交互
请求场景模型
请求时机
描述在什么时候需要发出请求,在alova
中以useHook
实现。
- 初始化展示数据,如刚进入某个界面或子界面;
- 人机交互触发 CS 交互,需要变更数据重新发出请求,如翻页、筛选、排序、模糊搜索等;
- 以防抖方式发送请求,避免视图数据闪动,以及降低服务端压力
- 预加载数据,如分页内预先加载下一页内容、预测用户点击某个按钮后预先拉取数据;
- 操作服务端数据,需发出增删改查请求,如提交数据、删除数据等;
- 同步服务端状态,如数据变化较快的场景下轮询请求、操作了某个数据后重新拉取数据;
请求行为
描述以怎样的方式处理请求,在alova
中以 Method 抽象实现。
- 占位请求,请求时展示 loading、骨架图、或者是上次使用的真实数据;
- 缓存高频响应,多次执行请求会使用保鲜数据;
- 多请求串行与并行;
- 重要接口的重试机制,降低网络不稳定造成的请求失败概率;
- 静默提交,当只关心提交数据时,提交请求后直接响应成功事件,后台保证请求成功;
- 离线提交,离线时将提交数据暂存到本地,网络连接后再提交;
请求事件
表示携带请求参数发送请求,获得响应,alova
可以与axios
、fetch
、XMLHttpRequest
等任意请求库或原生方案共同协作。
响应管理
alova
将响应数据状态化并统一管理,以请求层面的方式刷新视图数据、操作缓存,避免了在组件层面的操作,更加优雅和统一。
- 移除缓存响应数据,再次发起请求时将从服务端拉取;
- 更新缓 存响应数据,可更新任意位置响应数据,非常有利于跨页面更新数据;
- 刷新响应数据,可重新刷新任意位置的响应数据,也非常有利于跨页面更新数据;
- 自定义设置缓存,在请求批量数据时,可手动对批量数据一一设置缓存,从而满足后续单条数据的缓存命中;