RaAPIWrapper
使用 @propertyWrapper
来实现与 Android Retrofit
库中定义网络请求类似的效果。
当您在同一个文件中拥有大量网络请求 API 时,RaAPIWrapper
可以帮助您以更聚合的形式定义每个请求,这样您就不必在文件中来回跳转。
特别注意!:RaAPIWrapper
只是用于定义网络请求的语法糖。您需要在此基础上使用 Alamofire
、Moya
、其他第三方网络框架或直接调用 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
}
pod 'RaAPIWrapper'
如果您的项目依赖于 Alamofire
,那么您也可以考虑依赖于 RaAPIWrapper/AF
。此模块为 ParameterEncoding
提供了包装器。
或者将以下内容添加到您的 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。