为了能够执行 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 标头。
https://github.com/swiftui-packages/http-client-module.git
打开你的 Xcode 项目
步骤 3 有两个选项 a 和 b
a) 在菜单栏中导航到 File / Swift Packages / Add Package Dependency
b1) 选择项目的根文件夹
b2) 在 PROJECT 下选择你的应用名称
b3) 打开右侧 Info 和 Build Settings 旁边的 Swift Packages 选项卡
b4) 点击列表底部的 + 按钮
在这里你应该会看到 “Choose Package Repository:” 的提示
粘贴资源 URL
选择 Next 以使用最新版本,或选择特定版本或分支
在短暂的包解析加载期后,你将看到 “Choose package products and targets” 的提示(默认值应该可以)
最后点击 Finish 按钮
将 HTTPClientModule 导入到你想使用它的文件中
维护 README.md 文件
功能:使用 type.self 作为参数的响应编码
进一步研究关于文件上传和 表单数据 的 HTTP