感谢 Mike Lewis,进度已无缝集成到此库中,提供了简单而流畅的体验。
RequestDL 是一个 Swift 包,旨在简化执行网络请求的过程。它提供了一组工具,包括 RequestTask
协议,该协议支持不同类型的请求,包括 DataTask
、DownloadTask
和 UploadTask
。
RequestDL 的主要功能之一是支持指定请求的属性,例如 Query
、Payload
和 Headers
等。您还可以使用 RequestTaskModifier
和 RequestTaskInterceptor
在请求完成后处理响应,从而可以执行解码、映射、基于状态代码的错误处理以及在控制台中记录响应等操作。
Property
协议是另一个强大的功能,它允许开发人员实现自定义属性,以在结构体规范中或使用 @PropertyBuilder
定义请求的各个方面。这使得自定义请求以满足特定需求变得容易。
查阅我们全面的文档,获取开始在您的项目中使用 RequestDL 所需的所有必要信息。
我们非常欢迎您帮助将我们的文档翻译成您喜欢的语言!只需在我们的存储库上打开一个拉取请求,并附上您翻译版本的链接。我们期待收到您的贡献!
RequestDL 可以使用 Swift Package Manager 进行安装。要将其包含在您的项目中,请将以下依赖项添加到您的 Package.swift 文件中
dependencies: [
.package(url: "https://github.com/request-dl/request-dl-nio.git", from: "3.0.3")
]
使用 RequestDL 简单直观。您可以使用声明式的方式创建网络请求,通过使用 Property
协议或 @PropertyBuilder
属性来指定请求的属性。
这是一个简单的 DataTask
示例,它查询 Google 术语 “apple”,在控制台中记录响应,并忽略 HTTP 的响应头
try await DataTask {
BaseURL("google.com")
HeaderGroup {
AcceptHeader(.json)
CustomHeader(name: "xxx-api-key", value: token)
}
Query(name: "q", value: "apple")
}
.logInConsole(true)
.decode(GoogleResponse.self)
.extractPayload()
.result()
此代码创建了一个 DataTask
,其中 BaseURL
设置为 “google.com”,HeaderGroup
包含设置为 “application/json” 的 “Accept”,设置为 API 令牌的 “xxx-api-key” 标头,以及键为 “q”、值为 “apple” 的查询参数。然后,它将 logInConsole
属性设置为 true,这将在请求完成时在控制台中打印响应。它还会将响应解码为 GoogleResponse
的实例,然后忽略它。
这只是 RequestDL 功能的一个简单示例。请查阅文档以获取有关如何使用它的更多信息。
我们项目的版本控制遵循语义版本控制。版本号由三个部分组成:MAJOR.MINOR.PATCH。
MAJOR 版本:当存在不兼容的更改和破坏性更改时,版本号会递增。这些更改可能需要更新现有代码,并可能破坏向后兼容性。
MINOR 版本:当以向后兼容的方式添加新功能或增强功能时,版本号会递增。它可能包括对现有功能的改进、添加或修改。
PATCH 版本包括错误修复、补丁和安全修改,这些修改解决了问题、错误或漏洞,而不会中断现有功能。它也可能包括新功能,但必须谨慎实施以避免破坏性更改或兼容性问题。
建议查看每个版本的发行说明,以了解该特定版本中所做的具体更改和更新。
如果您发现错误或对新功能有想法,请打开一个 issue 或提交一个 pull request。我们欢迎来自社区的贡献!
这个库很大程度上归功于 Carson Katri 及其 Swift 包 Request 的工作。RequestDL 中使用的许多核心概念和技术都受到了 Carson 库的启发,RequestDL 的原始实现甚至使用了 Carson 库的一个分支作为其基础。
如果没有 Carson 的工作,这个库就不会以现在的形式存在。感谢 Carson 对 Swift 社区的贡献,以及对 RequestDL 开发的启发。