logo-library

Swift Platform Swift Package Manager CocoaPods Compatible

RealHTTP 是一个轻量级但功能强大的基于 Swift 的异步 HTTP 库。
该项目的目标是基于所有最新的 Swift 功能,创建一个易于使用、毫不费力的 HTTP 客户端。

您将获得什么?

以下是 RealHTTP 中的一个简单 HTTP 调用。

let todo = try await HTTPRequest("https://jsonplaceholder.typicode.com/todos/1")
           .fetch(Todo.self)

一行代码,包括从 JSON 到对象的自动解码。

当然,您可以配置具有许多其他参数的请求。 在这里看看

let req = HTTPRequest {
  // Setup default params
  $0.url = URL(string: "https://.../login")!
  $0.method = .post
  $0.timeout = 15

  // Setup some additional settings
  $0.redirectMode = redirect
  $0.maxRetries = 4
  $0.headers = HTTPHeaders([
    .init(name: .userAgent, value: myAgent),
    .init(name: "X-API-Experimental", value: "true")
  ])
   
  // Setup URL query params & body
  $0.addQueryParameter(name: "full", value: "1")
  $0.addQueryParameter(name: "autosignout", value: "30")
  $0.body = .json(["username": username, "pwd": pwd])
}
let _ = try await req.fetch()

代码是完全类型安全的。

Stubber 呢?

集成的 stubber 非常适合编写您自己的测试套件

这是一个简单的 stubber,它将原始请求作为响应返回

let echoStub = HTTPStubRequest().match(urlRegex: "*").stubEcho()
HTTPStubber.shared.add(stub: echoStub)
HTTPStubber.shared.enable()

当然,您可以使用规则(正则表达式、URI 模板等)完全配置您的 stub

// This is a custom stubber for any post request.
var stub = HTTPStubRequest()
      .stub(for: .post, { response in
        response.responseDelay = 5
        response.headers = HTTPHeaders([
          .contentType: HTTPContentType.bmp.rawValue,
          .contentLength: String(fileSize,
        ])
        response.body = fileContent
      })
HTTPStubber.shared.add(stub: stub)

就这样!

功能亮点

RealHTTP 提供了许多功能和自定义项,您可以在我们广泛的文档和测试套件中找到。
其中一些是

对于专业用户

文档

RealHTTP 提供了广泛的文档。

API 参考

RealHTTP 在源代码级别完全记录。 您将免费获得 XCode 内的文档自动完成功能; 此外,您可以从此处阅读由于 Swift Package Index 项目自动生成的完整 Apple 的 DoCC 文档

👉 API 参考

测试套件

RealHTTP 具有广泛的单元测试套件,涵盖许多标准和边缘情况,包括请求构建、参数编码、排队和重试策略。
请参阅 Tests/RealHTTPTests 文件夹中的 XCTest 套件。

要求

RealHTTP 可以安装在支持的任何平台上

安装

Swift Package Manager

将其作为依赖项添加到 Swift Package 中,并将其添加到您的 Package. Swift

dependencies: [
  .package(url: "https://github.com/immobiliare/RealHTTP.git", from: "1.0.0")
]

并将其作为目标的依赖项添加

targets: [
  .target(name: "MyTarget", dependencies: [
    .product(name: "https://github.com/immobiliare/RealHTTP.git", package: "RealHTTP")
  ])
]

在 Xcode 11+ 中,您还可以导航到“文件”菜单,然后选择“Swift Packages”->“添加 Package Dependency...”,然后输入存储库 URL 和版本详细信息。

CocoaPods

可以通过将 pod 'RealHTTP' 添加到您的 Podfile 中,使用 CocoaPods 安装 RealHTTP。

pod 'RealHTTP'

驱动的应用

ImmobiliareLabs 的出色移动团队创建了 RealHTTP。 我们目前在所有产品中使用 RealHTTP。

如果您在您的应用程序中使用 RealHTTP,请 给我们留言.

支持 & 贡献

ImmobiliareLabs & 贡献者 用 ❤️ 制作

我们很乐意您为 RealHTTP 做出贡献!
如果您对使用 RealHTTP、错误和增强功能有任何疑问,请随时通过打开 GitHub 问题 与我们联系。

ImmobiliareLabs