测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2016年3月 |
SPM支持 SPM | ✗ |
由Piotr Sochalewski,Sunshinejr维护。Piotr Sochalewski,Sunshinejr.
要运行示例项目,请克隆仓库,首先从Example目录运行 pod install
Swift 2.x
SwiftyRouter可以通过 CocoaPods 获得。要安装它,只需将以下行添加到Podfile中
pod "SwiftyRouter"
如果要解析响应为对象,并使用 ObjectMapper、ModelMapper 或 SwiftyJSON,我们为您解决了这个问题。只需使用以下任一行即可
pod "SwiftyRouter/ObjectMapper"
pod "SwiftyRouter/ModelMapper"
pod "SwiftyRouter/SwiftyJSON"
SwiftyRouter允许您轻松获取API请求接收到的原始 NSData
、解析后的 JSON
或映射后的模型
MyAPI.Authenticate().request(_:)
MyAPI.List().request().parseJSON(_:)
MyAPI.UserInfo(username: "trickyusername").request().parseObject(_:) // via ModelMapper or ObjectMapper
为了使其工作良好,首先,导入模块。
import SwiftyRouter
然后为选定的API服务创建 enum
,例如GitHub API。请记住,实现包含所有必需属性的 Endpointable
协议(含义为 baseUrl
和 endpoint
)。在这种情况下,我们包含了两个端点:用户仓库和用户信息。
enum Github: Endpointable {
case Repos(String)
case UserInfo(String)
var baseUrl: String { return "https://api.github.com" }
var endpoint: Subendpointable {
switch self {
case .Repos(let username):
return ReposEndpoint(username: username)
case .UserInfo(let username):
return UserInfoEndpoint(username: username)
}
}
}
然后使用具有 Subendpointable
协议的之前定义的端点实现结构体或类。再次填写所有必需属性( path
、method
、parameters
和 headers
)。我们在这里提供了一个方便的 init
,其中用户名是URL的一部分。
struct ReposEndpoint: Subendpointable {
// We specify the parameters
let username: String!
// Required methods/parameters
var path: String { return "/users/\(username)/repos" }
var method: EndpointMethod { return .GET }
var parameters: [String: AnyObject]? { return nil }
var headers: [String : String]? { return nil }
init(username: String) {
self.username = username
}
}
struct UserInfoEndpoint: Subendpointable {
// We specify the parameters
let username: String!
// Required methods/parameters
var path: String { return "/users/\(username)" }
var method: EndpointMethod { return .GET }
var parameters: [String: AnyObject]? { return nil }
var headers: [String : String]? { return nil }
init(username: String) {
self.username = username
}
}
之后,您就可以轻松地以这种方式接收所需的数据。
Github.UserInfo("DroidsOnRoids").request { result in
switch result {
case .Success(let data):
print("Just NSData: \(data)")
case .Failure(let error):
print(error)
}
}
需要不仅仅是清晰的 NSData
吗?请尝试 parseJSON()
。
Github.Repos("DroidsOnRoids").request().parseJSON { result in
switch result {
case .Success(let json):
print("What a beautiful dict!\n\(json)")
case .Failure(let error):
print(error)
}
}
您还可以使用 ObjectMapper
或 ModelMapper
将响应映射到对象(需要根据 安装 中指定的额外pod)。
Github.Repos("DroidsOnRoids").request().parseArray(Repository.self) { result in
switch result {
case .Success(let object):
print(object)
case .Failure(let error):
print(error)
}
}
Droids on Roids LLC
Piotr Sochalewski,[email protected]
Łukasz Mróz, [email protected]
SwiftyRouter 在MIT许可证下可用。查看LICENSE文件以获取更多信息。