SNPNetwork
SNPNetwork 是一个基于 Swift 的 HTTP 网络库,用于 iOS。它提供在 Alamofire 上方的接口,简化了多个常用网络任务。我们创建了它,以便在 Snapp 应用程序中添加一些我们需要的功能,这些功能在 Alamofire 中无法直接支持。例如,它有一个超级简化的 JSON 解析功能,通过设置其 'responseKey' 参数提供更清晰的语法。为了模块化我们的架构,我们将其发布为 Pod 文件,这样您就可以将其添加到您的项目中。让我们看看 SNPNetwork 的内部结构以及如何使用它。它还包括用于下载任务的其他功能。
深入了解!
在此,我们描述了 SNPNetwork 执行所讨论任务的方法。
- 在您开始使用 'request' 函数调用 API 之前,您可以调用以下函数来设置所有请求的默认标头和必需标头。设置默认标头的最佳位置之一是在 AppDelegate 中。
参数
- headers:是一个类似于这样的字典 [String: String]
class func setDefaultHeaders(headers: HTTPHeaders)
- 常见的网络任务
class func request<T: Decodable, E: SNPError>(url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil,
responseKey: String? = nil,
appendDefaultHeaders: Bool = true,
completion: @escaping (T?, E?) -> Void)
如您所见,request 是一个泛型函数,它返回您想要和 'SNPError' 类型的错误期望的模型。它是一个类函数,这意味着您无需创建 SNPNetwork 类的实例即可在任何地方使用它。(SNPNetwork.request("http://www.test.com")
参数
- url:要检索数据感兴趣 url。它应该是 String
- method:是您寻找请求类型,是一个枚举,如下所示
public enum HTTPMethod: String {
case options = "OPTIONS"
case get = "GET"
case head = "HEAD"
case post = "POST"
case put = "PUT"
case patch = "PATCH"
case delete = "DELETE"
case trace = "TRACE"
case connect = "CONNECT"
}
- parameters:是一个像这样的字典 [String: Any]
- headers:是一个类似于这样的字典 [String: String]
- appendDefaultHeaders 是 Boolean 类型。如果请求设置默认标头,则此标志负责默认情况下将默认header附加到 'headers' 参数,否则(appendDefaultHeaders = false)默认header将被 'headers' 参数替换。
- responseKey:是预期的响应路径,它将类似于 "Data.Information.Employee.Person"
- 下载任务
class func download(_ url: String,
progress: ((_ progress: Double) -> Void)?,
completion: @escaping (_ status: String?) -> Void)
- url:要下载数据的感兴趣 url。它应该是 String
- progress:显示下载文件的进度
如您所见,download 是一个类函数,这意味着在不创建 SNPNetwork 类的实例的情况下,您可以在任何地方使用它。(SNPNetwork.download("www.test.com")))
示例用法
- 设置默认头信息
SNPNetwork.shared.setDefaultHeaders(headers: ["iOS-Ver":"11.0"])
- 常见的网络任务
SNPNetwork.shared.request(url: "www.test.com",
method: .post,
parameters: parameters(),
encoding: JSONEncoding.default,
responseKey: "data") { (config: Config?, error: SNPError?) in
if error == nil {
self.config = config
} else {
print(error!)
}
}
--或者--
SNPNetwork.shared.request(url: "www.test.com") { (config: Config?, error: SNPError?) in
if error == nil {
self.config = config
} else {
print(error!)
}
}
- 下载任务
SNPNetwork.shared.download("www.test.com", progress: {(progress) in
print(progress)
}, completion: {(status) in
print(status!)
})
--或者--
SNPNetwork.shared.download("www.test.com", progress: nil, completion: {(status) in
print(status!)
})
入门教程
1.git clone https://github.com/snapp-cab/SNPNetwork.git
2.在 iOS 项目中运行 pod install。
pod 'SNPNetwork'
作者
Arash Z. Jahangiri, [email protected]
如果您对该项目有任何问题,请通过电子邮件联系: [email protected]
欢迎提交拉取请求!
许可协议
SNPNetwork 使用 MIT 许可协议提供。更多请查看 LICENSE 文件。