RaAPIWrapper 1.2.4

RaAPIWrapper 1.2.4

Rakuyo 维护。



  • Rakuyo

RaAPIWrapper

中文

RaAPIWrapper 使用 @propertyWrapper 实现与 Android Retrofit 库中定义网络请求类似的效果。

当您在同一个文件中有大量网络请求 API 时,RaAPIWrapper 可以帮助您以更聚合的形式定义每个请求,这样就不必在文件中频繁跳转。

先说一说

注意!RaAPIWrapper 只是用于定义网络请求的语法糖。您需要使用 AlamofireMoya、其他第三方网络框架或直接调用 URLSession 来基于这个定义发起网络请求。

好的一面是,您可以通过几乎不需要或不做代码更改轻松地将 RaAPIWrapper 整合到现有项目中,并且 RaAPIWrapper 可以与您项目中的现有网络框架很好地共存。

要求

  • iOS 12macOS 10.14watchOS 5.0tvOS 12 或更高版本。
  • 需要 Xcode 14 或更高版本。
  • Swift 5.7 或更高版本需要。

示例

@GET("/api/v1/no_param")
static var noParamAPI: APIParameterBuilder<()>? = nil

@POST("/api/v1/tuple_param")
static var tupleParamAPI: APIParameterBuilder<(id: Int, name: String?)>? = .init {
    // `Dictionary` and `Array` can be used directly as parameters.
    ["id": $0.id, "name": $0.name]
}

@POST("/post")
static var postWithModel: APIParameterBuilder<Arg>? = .init {
    // When the parameter `Arg` complies with the `APIParameter` (`Encodable & Hashable`) protocol, 
    // it can be used directly as a parameter.
    $0
}

安装

CocoaPods

pod 'RaAPIWrapper'

如果您的项目依赖 Alamofire,您也可以考虑依赖 RaAPIWrapper/AF。此模块提供了对 ParameterEncoding 的包装。

Swift 包管理器

或者将以下内容添加到您的 Package.swift 文件中

dependencies: [
  .package(
    url: "https://github.com/RakuyoKit/RaAPIWrapper.git", 
    .upToNextMajor(from: "1.1.1")
  )
]

使用方法

请参阅 Demo.playground 中的示例。

由于游乐场依赖于以Swift包管理器形式的RaAPIWrapper,请首先通过Package.swift打开项目,然后从左侧导航栏选择Demo.playground并运行内容。

许可协议

RaAPIWrapper采用MIT许可证。有关更多信息,请参阅LICENSE