测试受测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2016年12月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由John Morgan维护。
FireRoutes是Alamofire的一个轻量级扩展,通过Route
的概念简化了网络请求。
Route
表示特定网络请求应该如何结构以及如何将响应数据转换为一个可用的对象。它符合Alamofire的两个协议:URLRequestConvertible
和DataResponseSerializerProtocol
。
可以这样定义Route
的子类
let baseURL = "http://www.myserver.com/api"
class AvatarRoute: Route<UIImage> {
init(userId: String) {
super.init()
request = GET(baseURL + "/avatar/\(userId)_img.png")
responseSerializer = DataRequest.imageResponseSerializer()
}
}
这在一个类中捕获了对头像端点的所有客户端期望。在单一Routes.swift
文件中定义许多路线提供了一个有用的目录,列出了应用程序可能使用的所有端点。
Route
的概念还通过扩展Alamofire的SessionManager
简化了发起请求的代码
manager.request(AvatarRoute(userID:"jmorgan")) { response in
// compiler infers response.result.value to be of UIImage type
}
编译器推断出正确的Result
类型,保持了代码的简洁和简单。
尽管它的方法很简单,但FireRoutes保留了所有URLRequestConvertible
和DataResponseSerializerProtocol
的灵活性。您可以将其与Alamofire的其他扩展一起使用,例如AlamofireObjectMapper来生成自定义模型对象...
class MappedModelRoute: Route<MappedModel> {
override init() {
super.init()
request = GET(baseURL + "/model")
responseSerializer = DataRequest.ObjectMapperSerializer(nil)
}
}
...这意味着响应将被解析并映射到您的自定义模型对象中
manager.request(MappedModelRoute()) { response in
// compiler infers response.result.value to be of MappedModel type
}
FireRoutes可通过CocoaPods获取。要安装,只需将以下行添加到您的Podfile
pod 'FireRoutes'
FireRoutes可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。