RaAPIWrapper
利用 @propertyWrapper
来实现类似于 Android Retrofit
库中定义网络请求的效果。
在同一个文件中包含大量的网络请求接口时,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 {
// 字典和数组可直接作为参数使用
["id": $0.id, "name": $0.name]
}
@POST("/post")
static var postWithModel: APIParameterBuilder<Arg>? = .init {
// 当参数 `Arg` 遵守 `APIParameter`(`Encodable & Hashable`) 协议时,可直接作为参数使用。
$0
}
pod 'RaAPIWrapper'
如果您的项目依赖了 Alamofire
,那么您还可以考虑依赖 RaAPIWrapper/AF
。该模块提供了针对 ParameterEncoding
的封装。
- 依次选择 File > Swift Packages > Add Package Dependency
- 输入 https://github.com/RakuyoKit/RaAPIWrapper.git
- 选择 "Up to Next Major" 并填入对应的版本号
或者将下面的内容添加到 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
,运行相关内容。
RaAPIWrapper
在 MIT 许可下可用。 有关更多信息,请参见 LICENSE 文件。