一个基于Alamofire
库支持请求和数据上传的简单网络请求框架。
Request
请求库是基于单个请求配置,去发起请求,做相应的数据返回处理的网络处理框架。
单个请求配置区别于Alamofire
直接请求的好处是,创建对应请求的配置文件。可以提前对于请求的参数进行验证,修饰等。对于多地方重用和团队合作使用,请求逻辑更加集中。
单个请求配置对于请求的可扩展和接口的升级和维护比传统的增强了不少。
.package(url: "https://github.com/josercc/Request.git", from: "2.0.0")
目前只支持了
Swift Package Manager
的安装
比如我们基于https://www.xxx.com
域名进行说明,那么我们需要创建一个API
协议的配置。
class SampleApi: API {
}
我们实现API
协议的host
属性,值得注意的是。框架内部做了环境变量的支持,如果环境变量设置了HOST
值,则优先读取HOST
的值作为请求的域名。
class SampleApi: API {
static var host: String {"https://www.xxx.com"}
}
比如发送一个GET
的网络请求
https://www.xxx.com/api/json?name=josercc
我们需要创建对应的网络请求配置
class SampleRequest: API {
static var defaultHeadersConfig: ((inout HTTPHeaders) -> Void)?
static var host: String {"https://www.xxx.com"}
}
我们创建一个请求的配置文件
struct SampleApi:APIConfig {
var path: String {"/api/json"}
var parameters: [String : Any]? {
[
"name":"josercc"
]
}
}
我们还需要创建一个模型
struct SampleModel:Model {
var _isSuccess: Bool {self._code == 0}
var _code: Int {0}
var _message: String {"success"}
}
这个模型需要根据实际返回需求来,这里就只是演示一下。
现在你就可以这样的发起请求了
SampleRequest.request(type: SampleModel.self,
config: SampleApi()) { model in
} failure: { code, message in
}
async/await的支持(2.3版本之后)
do {
let model = try await SampleRequest.request(type:SampleModel.self, config)
print(model)
}catch(e:NSError) {
print("code:\(e.code) message:\(e.message)")
}
更新的详细信息请查阅接口文档