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,它将原始请求作为响应返回
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 提供了广泛的文档。
RealHTTP 在源代码级别完全记录。 您将免费获得 XCode 内的文档自动完成功能; 此外,您可以从此处阅读由于 Swift Package Index 项目自动生成的完整 Apple 的 DoCC 文档
👉 API 参考
RealHTTP 具有广泛的单元测试套件,涵盖许多标准和边缘情况,包括请求构建、参数编码、排队和重试策略。
请参阅 Tests/RealHTTPTests
文件夹中的 XCTest 套件。
RealHTTP 可以安装在支持的任何平台上
将其作为依赖项添加到 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 和版本详细信息。
可以通过将 pod 'RealHTTP' 添加到您的 Podfile 中,使用 CocoaPods 安装 RealHTTP。
pod 'RealHTTP'
ImmobiliareLabs 的出色移动团队创建了 RealHTTP。 我们目前在所有产品中使用 RealHTTP。
如果您在您的应用程序中使用 RealHTTP,请 给我们留言.
由 ImmobiliareLabs & 贡献者 用 ❤️ 制作
我们很乐意您为 RealHTTP 做出贡献!
如果您对使用 RealHTTP、错误和增强功能有任何疑问,请随时通过打开 GitHub 问题 与我们联系。