使用Swift中的路由器为IOS应用程序更好地路由
在这篇文章中,我将讨论在我正在努力使IOS应用程序开发更强大的项目中使用的其他可重用类。 我最近需要导航路由器来处理网络请求中不同类型的URL,处理一堆.GET,.POST,.PUT。 删除HTTP请求类型等
使用单独的类来处理网络任务是一个好主意。 因此,使用自定义路由器。 它当然是基于Alamofire。
什么是路由器?
路由器是一种处理API /微服务url的面向协议的方法,但将自身用作枚举是一个更好的主意。 通过从枚举案例中生成URL请求,这将无缝地在发出请求时帮助统一和简化网络路由。
因此,另一种方法启发了我一些概念,您可以阅读LittleBitesOfCocoa中的博客文章。 公平地说,它更轻巧,但不能满足我的要求。
#93:为Alamofire创建路由器🔀🔥
Alamofire 3.0(https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%203.0%20Migration%20Guide.md…littlebitesofcocoa.com
创建路由器协议
首先,创建一个协议RouterProtocol来处理四种方法,以使REST兼容(获取,发布,更新,销毁),以处理常见的API请求(我刚刚声明了自己的ApiType来获取API URL的路径/路由,因此不是)在上下文中,则省略。)
接下来要做的就是创建一个路由器枚举 ,这个实现为什么呢? 我会解释。
- 首先,我们需要遵循RouterProtocol才能使用我们的功能。
- Router枚举必须为通用类型,必须接受具有RouterProtocol一致性的任何类型的结构。
- 它接收四个动词(.GET,.POST.PUT,.DELETE等),因此可以为其声明方法,路径和路由属性。
- 将URLRequest属性创建为NSMutableURLRequest,因此添加常用配置,例如方法,默认标头,OAuth令牌(如果可用)等。
- 最后,使用Alamofire的参数编码可以执行所需的编码。
用法
使用路由器非常简单,只需在ApiManager中声明一个方法(我将在另一篇文章中介绍我的ApiManager版本)
- 在我的示例中,getAccounts方法将AccountsRequest作为输入 ,response作为AccountsResponse作为输出,此类仅是结构,您可以自己滚动 (仅供参考:在另一篇文章中,我将向您介绍基于“请求/响应”结构的方法)
- 您的经理(当然,它封装了Alamofire实例)会执行请求(可到达性和微调器内容不在上下文中。我会在此处发布有关可到达性的信息,您可以在此处阅读)
- Alamofire管理器将Router枚举作为输入,并具有我们的RouterProtocol,我们说这是一个.GET请求,所以我确实将诸如accountRequest.accountId的值作为String传递,因为在协议中。GET匹配请求具有“ case get(T,String) ”
- 如果我们需要说这是一个.POST请求,则协议.POST可以将 [ String:AnyObject])作为参数,因此,这一次我必须将我的accountRequest输入传递为cast到Dictionary()? [String:AnyObject])等
简单!
例如;
Router.get(AccountsRouter(),accountRequest.accountId!)。URLRequest
现在,您可以看到为任何种类的Api创建任何种类的Router都具有表现力。 它始终严格定义,可理解且干净。
这篇文章中的代码,托管在Github中
seyhunak /路由器
在Swift github.com中使用路由器为IOS应用程序更好地路由
感谢您的阅读,希望您喜欢。