SwiftyRouter 0.1.3.1

SwiftyRouter 0.1.3.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年3月
SPM支持 SPM

由Piotr Sochalewski,Sunshinejr维护。Piotr SochalewskiSunshinejr.



SwiftyRouter 0.1.3.1

  • Piotr Sochalewski 和 Łukasz Mróz

SwiftyRouter

用法

要运行示例项目,请克隆仓库,首先从Example目录运行 pod install

要求

Swift 2.x

安装

SwiftyRouter可以通过 CocoaPods 获得。要安装它,只需将以下行添加到Podfile中

pod "SwiftyRouter"

如果要解析响应为对象,并使用 ObjectMapperModelMapperSwiftyJSON,我们为您解决了这个问题。只需使用以下任一行即可

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 协议(含义为 baseUrlendpoint)。在这种情况下,我们包含了两个端点:用户仓库和用户信息。

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 协议的之前定义的端点实现结构体或类。再次填写所有必需属性( pathmethodparametersheaders)。我们在这里提供了一个方便的 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)
    }
}

您还可以使用 ObjectMapperModelMapper 将响应映射到对象(需要根据 安装 中指定的额外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文件以获取更多信息。