HTTP 客户端模块

build test swiftlint Codacy Badge swiftpackageindex swift versions swiftpackageindex platforms License: GPL v3

为了能够执行 HTTP 请求,Swift 通过 Foundation Framework 提供了 URLSession 类。 传统上,这是以面向对象的方式使用单例实例实现的,但按照今天的标准来看,它已经不再那么直观易用。 它需要先创建一个对象,设置其属性,然后再对其执行 resume() 函数,而不是在构造函数中接收所有与请求相关的属性。 如果你想在你的应用中使用请求的响应(这似乎是显而易见的),还需要进行主线程调度。 所有这些样板代码意味着代码质量下降,可读性和可维护性也随之降低。

这个包旨在以高度直观的方式发送 HTTP 请求。 与 Alamofire 等库相比,它也应尽可能地保持极简。


用法

由于通常需要在 HTTP 请求开始时启动加载指示器并在收到响应时结束它,因此该模块带有生命周期钩子

响应对象是一个由响应状态和响应体组成的元组。 它可以在闭包的开头进行解构,也可以作为对象传递

HTTPClient.get(url: "www.abc.com") { responseStatus, responseBody in

}
HTTPClient.get(url: "www.abc.com") { response in
    response.body // Data
    response.status // HTTPClient.ResponseStatus
    response.status.code // Int
}

为了进一步降低项目的复杂性,响应体参数接受可解码对象,它会自动将其转换为 JSON 字符串并添加相应的 content-type 作为 HTTP 标头。


集成

  1. 复制资源 URL
https://github.com/swiftui-packages/http-client-module.git
  1. 打开你的 Xcode 项目

  2. 步骤 3 有两个选项 a 和 b
    a)   在菜单栏中导航到 File / Swift Packages / Add Package Dependency
    b1) 选择项目的根文件夹
    b2) 在 PROJECT 下选择你的应用名称
    b3) 打开右侧 InfoBuild Settings 旁边的 Swift Packages 选项卡
    b4) 点击列表底部的 + 按钮

  3. 在这里你应该会看到 “Choose Package Repository:” 的提示

  4. 粘贴资源 URL

  5. 选择 Next 以使用最新版本,或选择特定版本或分支

  6. 在短暂的包解析加载期后,你将看到 “Choose package products and targets” 的提示(默认值应该可以)

  7. 最后点击 Finish 按钮

  8. 将 HTTPClientModule 导入到你想使用它的文件中


也可以在这里找到


待办事项