RaAPIWrapper
RaAPIWrapper
使用 @propertyWrapper
实现与 Android Retrofit
库中定义网络请求类似的效果。
当您在同一个文件中有大量网络请求 API 时,RaAPIWrapper
可以帮助您以更聚合的形式定义每个请求,这样就不必在文件中频繁跳转。
先说一说
注意!:RaAPIWrapper
只是用于定义网络请求的语法糖。您需要使用 Alamofire
、Moya
、其他第三方网络框架或直接调用 URLSession
来基于这个定义发起网络请求。
好的一面是,您可以通过几乎不需要或不做代码更改轻松地将 RaAPIWrapper
整合到现有项目中,并且 RaAPIWrapper
可以与您项目中的现有网络框架很好地共存。
要求
- iOS 12、macOS 10.14、watchOS 5.0、tvOS 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 包管理器
- 文件 > Swift 包 > 添加包依赖关系
- 添加 https://github.com/RakuyoKit/RaAPIWrapper.git
- 选择“更新到下一个大版本”并填写相应的版本号
或者将以下内容添加到您的 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。