这个封装的思路是每个api请求都要封装成继承BaseRequest的请求子类?

来源:3-4 基于配置的请求封装与hi_net架构搭建-1

慕妹8246037

2022-06-21

可以看出这样设计的解耦作用,比如将method,url-path 等信息封装到请求的内部,不再有外部指定。

但是我想既然method、path 可以 封装到内部,为什么请求参数、请求头还要用通用的Map 去承接呢,比如登录api(随便假设的,不是项目里的), 在LoginRequest 直接声明必须参数password、username, 可选参数国家country, 这样这个登录需要那些参数,参数是否可选,请求方式,请求路径 都一目了然,外部调用发请求的时候也不用手动去拼参数["username": xxx, "passwrod": "xxx", country: "xxx"],  而是直接request.username = xxx, request.password = xx,  差不多相当于 处理服务器响应数据,不直接使用json, 而是转Model 再使用。

 当然每个Request子类要处理自己的一个任务,以上面的登录为例,就是将password、username等属性聚拢封装成请求参数Map抛给外部调用,比如网络请求框架。

我认为这样的好处是外部调用更加友好,api更加清晰,但是有个很大的问题就是需要创建很多请求文件,且按照我说面说的,工作量会增加很多, 每个请求类的代码会更多,毕竟多了很多参数、header作为其属性。


主要是我也没有大型项目的经验,没有体验过大厂的项目结构规范,也不知道上面的分析是否正确。

感觉小项目不适合这样做,小项目一般都要求快,这样做会明显提升工作量,开发周期。

老师怎么看。

写回答

1回答

CrazyCodeBoy

2022-06-23

主要看项目要求,对于大型项目还是建议能够通过BaseRequest来提升项目的扩展和后期的维护性,当然如果追求快一个map作为请求参数也能解决。

0
0

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1723 学习 · 870 问题

查看课程