Swift Compatibility Platform Compatibility codecov

RequestDL

感谢 Mike Lewis,进度已无缝集成到此库中,提供了简单而流畅的体验。

RequestDL 是一个 Swift 包,旨在简化执行网络请求的过程。它提供了一组工具,包括 RequestTask 协议,该协议支持不同类型的请求,包括 DataTaskDownloadTaskUploadTask

RequestDL 的主要功能之一是支持指定请求的属性,例如 QueryPayloadHeaders 等。您还可以使用 RequestTaskModifierRequestTaskInterceptor 在请求完成后处理响应,从而可以执行解码、映射、基于状态代码的错误处理以及在控制台中记录响应等操作。

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。

建议查看每个版本的发行说明,以了解该特定版本中所做的具体更改和更新。

贡献

如果您发现错误或对新功能有想法,请打开一个 issue 或提交一个 pull request。我们欢迎来自社区的贡献!

致谢

这个库很大程度上归功于 Carson Katri 及其 Swift 包 Request 的工作。RequestDL 中使用的许多核心概念和技术都受到了 Carson 库的启发,RequestDL 的原始实现甚至使用了 Carson 库的一个分支作为其基础。

如果没有 Carson 的工作,这个库就不会以现在的形式存在。感谢 Carson 对 Swift 社区的贡献,以及对 RequestDL 开发的启发。