Haitch 0.8

Haitch 0.8

测试已测试
语言语言 SwiftSwift
许可证 自定义
发布最后发布2016年7月
SPM支持 SPM

PosseKevin Gray 维护。



Haitch 0.8

H(在爱尔兰和一些澳大利亚地区称为 aitch /ˈeɪtʃ/ 或 haitch /ˈheɪtʃ/;复数 aitches 或 haitches)

Haitch 是一个用于 iOS 和 Mac OS X 的 HTTP 客户端,用 Swift 编写。

特性

  • 功能全面,但没有任何冗余
  • 易于理解,基于构建器的架构
  • 支持“插件”功能,允许进行请求/响应注入
  • 可扩展的响应接口,您可以设计适合应用程序需求的任何特定响应

Swift 版本

Haitch 0.7+ 及其 开发 需要 Swift 2.2+。如果您使用的是 Swift 版本 < 2.2,您应使用 Haitch 版本 0.6

安装

基础知识

发出请求很简单

let httpClient: HttpClient = HttpClient()
let req: Request = Request.Builder()
  .url(url: "http://my.domain.com/path", params: params)
  .method("GET")
  .build()

httpClient.execute(req) { (response: Response?, error: NSError?) -> Void in
  // deal with the response data (NSData) or error (NSError)
}

JSON

获取 JSON 简单

client.execute(request: req, responseKind: JsonResponse.self) {
  (response, error) -> Void in
    if let jsonResponse: JsonResponse = response as? JsonResponse {
      print(jsonResponse.json)      // .json == AnyObject?
    }
  }

自定义响应

如果您使用 SwiftyJSON,您可以创建一个自定义响应类来将响应数据转换为 JSON 数据类型。这样做很简单。

import Foundation
import SwiftyJSON

public class SwiftyJsonResponse: Response {

  private (set) public var json: JSON?
  private (set) public var jsonError: AnyObject?

  public convenience required init(response: Response) {
    self.init(request: response.request, data: response.data, statusCode: response.statusCode,
        error: response.error)
  }

  public override init(request: Request, data: NSData?, statusCode: Int, error: NSError?) {
    super.init(request: request, data: data, statusCode: statusCode, error: error)
    self.populateJSONWithResponseData(data)
  }

  private func populateJSONWithResponseData(data: NSData?) {
    if data != nil {
      var jsonError: NSError? = nil
      let json: JSON = JSON(data: data!, options: .AllowFragments, error: &jsonError)
      self.jsonError = jsonError
      self.json = json
    }
  }

}

常见问题解答

为什么没有 sharedClient(或者类似的)?

因为这关乎您的需求,并非我们为您选择的。您应该既理解又掌握自己的网络堆栈。如果您对此非常坚持,可以子类化 HttpClient 并自行添加。很简单。

为什么我应该使用这个?

由您决定。世界上有其他出色的框架,但根据我们的经验,我们只需要他们所做的很小一部分。Haitch 的目标是允许您编写模块化、可重用的逻辑,符合您特定的需求。不是处理“万一”的可能性。

在产品中测试过吗?我可以在产品中使用它吗?

此处的代码是基于Posse与各种规模客户的经验编写的。它已经过生产测试。尽管如此,这个版本的代码是我们自己的。它是全新的。我们计划在生产中使用它,并计划持续改进它。如果你发现一个错误,请告诉我们!

谁是Posse?

我们是纽约市最好的辣妈手机店,没错。嘿,但我们有偏见。我们的东西在http://goposse.com。去看看吧。

结束语

鸣谢

Haitch是由Posse Productions LLC资助、拥有和管理的。在Twitter上关注我们@goposse。随时提出建议、想法或寒暄。

安全

如果你认为你发现了Haitch的一个严重的安全漏洞或问题,请尽快向[email protected]报告。请勿在公共问题跟踪器上发布它,以便我们有时间和机会处理它,并相应地通知每个人。

许可证

Haitch是在修改后的MIT许可证下发布的。有关详细信息,请参阅LICENSE。