RealHTTP:Swift编写的轻量级异步HTTP库





项目名称:RealHTTP

项目概述

RealHTTP是一个用Swift编写的轻量级但功能强大的异步HTTP库。该项目旨在利用Swift的最新特性,提供一个易于使用的HTTP客户端。

主要功能

  • 异步/等待:原生支持Swift的Async/Await特性。

  • 请求队列:内置请求队列功能。

  • 基于URLSession:基于Swift的原生URLSession技术。

  • 重试机制:高级重试机制。

  • 响应验证器:可链式和自定义响应验证器,类似于Node.js的Express.js。

  • 自动编解码:自动Codable对象编解码。

  • 自定义解码:对象的自定义解码。

  • HTTP Stub:强大的集成HTTP Stub,用于模拟和测试。

  • Combine适配器:支持Combine发布者适配器。

  • URI模板系统:支持URI模板。

  • 可恢复的上传/下载:支持进度跟踪的可恢复上传/下载。

  • Multipart表单数据:支持原生Multipart表单数据。

  • 连接度量收集器:高级URL连接度量收集器。

  • SSL Pinning和认证:支持SSL Pinning,基本/摘要认证。

  • cURL调试器:内置cURL命令输出调试器。

使用示例

以下是RealHTTP的一个简单HTTP调用示例:

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

当然,你也可以完全配置请求,包括许多其他参数:

let req = HTTPRequest {
  // 设置默认参数
  $0.url = URL(string: "https://.../login")!
  $0.method = .post
  $0.timeout = 15

  // 设置一些额外的设置
  $0.redirectMode = redirect
  $0.maxRetries = 4
  $0.headers = HTTPHeaders([
    .init(name: .userAgent, value: myAgent),
    .init(name: "X-API-Experimental", value: "true")
  ])
   
  // 设置URL查询参数和主体
  $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()

你还可以完全配置你的stubber规则(正则表达式、URI模板等):

// 这是一个自定义stubber,用于任何POST请求。
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可以通过Swift Package Manager或CocoaPods安装。

Swift Package Manager

在Package.swift中添加依赖:

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

CocoaPods

通过在Podfile中添加pod 'RealHTTP'来安装RealHTTP。

项目地址

项目的GitHub地址为:immobiliare/RealHTTP

或许喜欢

WaterTracker: 跨平台纯SwiftUI开发的喝水追踪应用

WaterTracker是一款跨iOS、iPadOS和watchOS平台的喝水追踪应用,使用SwiftUI开发,支持HealthKit和CloudKit数据同步,无广告、无内购。

最近更新 2024-12-09

MasonryStack:SwiftUI中的Pinterest风格垂直和水平布局

MasonryStack是一个SwiftUI库,提供类似Pinterest的垂直和水平布局方式,支持动态列数和间距调整,适用于展示大量数据。

最近更新 2024-12-09

TextBuilder:SwiftUI文本组合工具简化文本格式化

TextBuilder是一个利用Swift Result Builders功能的库,用于简化SwiftUI中文本的格式化和内容逻辑处理,支持多种文本分隔符和自定义分隔符。

最近更新 2024-12-09

热榜

Made with in Shangrao,China By 老雷

Copyright © devler.cn 1987 - Present

赣ICP备19009883号-1