RaAPIWrapper

中文

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

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

事先说明

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

好处是您可以轻松地将 RaAPIWrapper 集成到您现有的项目中,几乎不需要更改代码,并且 RaAPIWrapper 可以与您项目中现有的网络框架很好地共存。

要求

示例

@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 Manager

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

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

使用方法

请参考 Demo.playground 中的示例。

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

许可证

RaAPIWrapperMIT 许可证下可用。 更多信息请参阅 LICENSE