Swiftpack.co - josercc/Request as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by josercc.
josercc/Request v2.3.2
一个基于`Alamofire`库支持请求和数据上传的简单网络请求框架。
⭐️ 0
🕓 1 year ago
iOS macOS
.package(url: "https://github.com/josercc/Request.git", from: "v2.3.2")

Request

一个基于Alamofire库支持请求和数据上传的简单网络请求框架。

Overview

Request请求库是基于单个请求配置,去发起请求,做相应的数据返回处理的网络处理框架。 单个请求配置区别于Alamofire直接请求的好处是,创建对应请求的配置文件。可以提前对于请求的参数进行验证,修饰等。对于多地方重用和团队合作使用,请求逻辑更加集中。 单个请求配置对于请求的可扩展和接口的升级和维护比传统的增强了不少。

安装

Swift Package Manager

.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)")
}

更新的详细信息请查阅接口文档

GitHub

link
Stars: 0
Last commit: 1 year ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

v2.3.2
1 year ago

可以支持最低部署版本

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics