项目的开始我们必然要面临一些准备工作来做统筹布局(如: 网络API的封装、数据处理与UI布局的选择等等),我们这边选择的是Alamofire、ObjectMapper、AlamofireObjectMapper、ReactiveCocoa作为MVVM分层架构的现实:
1)运用ObjectMapper达到数据之间的相互转化;
2)结合Alamofire、ObjectMapper、AlamofireObjectMapper与ReactiveCocoa封装网络接口让数据可传递、可监听,为调用API接口服务。
3)通过viewmodel的属性(Property)和动作(Action)给view层提供必要的数据和执行的动作。
上面大致介绍了整个架构的现实原理,接下来我们要介绍的网络接口封装的第一步Router协议的实现。Router协议作为网络层现实的一部分,目的就是把API地址转化为更加容易理解的Router名称供其他地方使用,如:
这就是一个登录API的现实,RouterConvertible 就是我们所要现实的router协议,我们要让router协议具备网络请求的必要属性,实现如下:
从实际上考虑除了urlPath需要外部提供,headers和paramters是可选的,method和parameterEncoding可以给与默认值,在需要的时候在作调整,那么如何让这个协议现实这样的功能呢?
swift为我们提供了协议扩展,让我们轻松现实这样的功能,如下:
综上所述,我们的Router协议的实现已大功告成!