NetworkMapper 1.1.4

NetworkMapper 1.1.4

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2019年4月
SPM支持 SPM

Adam Debono 维护。



 
依赖关系
Alamofire~> 4.8.2
AlamofireImage~> 3.5.2
 

  • Adam Debono

NetworkMapper

一个框架,用于基于 AlamofireUnbox 将 JSON 响应映射到 Swift 对象。

## 安装

Cocoapods

pod 'NetworkMapper', '~> 0.1.23'

用法

NetworkMapper 使用协议来实现功能。这些协议只要求您为请求的实例变量定义方法、URL 和参数。

基本请求

您可以通过符合 NetworkRequest 来制作基本请求,不映射响应。您可以使用 responseJSONresponseData 从服务器获取响应。

struct ExampleRequest: NetworkRequest {
  let method: HTTPMethod = .get
  let url: URL = URL(string: "https://example.org/example/user")
  let parameters: [String:Any]? = nil
}

ExampleRequest().responseJSON { response in
  switch response.result {
  case .failure(let error):
    // process error
  case .success(let json):
    // process response
  }
}

映射请求数据

映射请求数据稍微更复杂一些。映射请求数据要求您创建一个符合 NetworkObjectRequestNetworkObjectResponse 的对象。

响应协议要求您符合 Unboxable 协议,更多详细信息请参阅其 文档。响应对象被认为 JSON 应答的根对象。目前不支持数组作为根对象。

请求协议在 NetworkRequest 的基础上增加了 associatedtype,用于指定响应对象的类型。请求完成时,JSON 对象会被映射到响应对象。还有一个可选实现的其他函数 responseDecoded,默认实现为不执行任何操作。

struct ExampleObjectRequest: NetworkObjectRequest {
  typealias ResponseType = ExampleObjectResponse

  let method: HTTPMethod = .get
  let url: URL = URL(string: "https://example.org/example/users")
  let parameters: [String:Any]? = nil
}

struct ExampleObjectResponse: NetworkObjectResponse {
  let users: [User]
  let pageNumber: Int

  init(unboxer: Unboxable) throws {
    self.users = try unboxer.unbox(key: "users")
    self.pageNumber = try unboxer.unbox(keyPath: "pagination.page_number")
  }
}

struct User: Unboxable {
  let name: String
  let age: Int

  init(unboxer: Unboxable) throws {
    self.name = try unboxer.unbox(key: "name")
    self.name = try unboxer.unbox(key: "age")
  }
}

ExampleObjectRequest().responseObject { response in
  switch response.result {
  case .failure(let error):
    // process error
  case .success(let object):
    // process response
  }
}