YMNetwork
Swift 编写的 HTTP 网络库。
要求
- iOS 8.0+
- Xcode 11+
- Swift 5.0+
用法
YMNetwork 被设计成非常容易创建 HTTP 请求。
重要备注:如果您通过 Cocoapods 实现,需要将框架导入为 import YMNetwork_Swift
,对于 Carthage,导入 import YMNetwork
即可。请参阅 安装 部分的详细信息。
特性
映射
在 YMNetwork 中映射非常简单。您只需将响应结构体符合 YMResponse
并将模型符合 YMModel
。
struct MovieResponse: YMResponse {
private enum CodingKeys: String, CodingKey {
case page
case numberOfResults = "total_results"
case numberOfPages = "total_pages"
case movies = "results"
}
let page: Int
let numberOfResults: Int
let numberOfPages: Int
let movies: [Movie]
}
// MARK: - Movie
struct Movie: YMModel {
let id: Int
let posterPath: String
let backdrop: String
let title: String
let releaseDate: String
let rating: Double
let overview: String
enum CodingKeys: String, CodingKey {
case id
case posterPath = "poster_path"
case backdrop = "backdrop_path"
case title
case releaseDate = "release_date"
case rating = "vote_average"
case overview
}
}
下载管理
使用YMDownloadRequest
创建您的下载请求。如果您在您的类中实现了YMNetworkManagerDownloadDelegate
,则可以管理和查看所有下载的进度。
func ymNetworkManager(_ manager: YMNetworkManager, request: YMDownloadRequest?, downloadTask: URLSessionDownloadTask)
您还可以暂停、恢复或取消您的下载任务。
private let manager = YMNetworkManager(
configuration: YMNetworkConfiguartion(
baseURL: environment.baseURL,
headers: [:]
)
)
// Start Download
try? manager.shared.download(with: &request)
// Pause Download
manager.pauseDownloadTask(of: request)
// Resume Download
manager.resumeDownloadTask(of: request) { (status, error) in
completion(status, error)
}
// Cancel Download
manager.cancelDownloadTask(of: request)
HTTP请求
您可以通过将这些类实现为YMRequest
来管理您的请求数据。
所有可能的值
var path: String { get }
var method: HTTPMethod { get }
var headers: HTTPHeaders? { get }
var bodyParameters: Parameters? { get }
var urlParameters: Parameters? { get }
var task: HTTPTaskType { get }
简单用法
struct MovieRequest: BaseRequest {
var path: String = "now_playing"
var urlParameters: Parameters?
init(page: Int) {
urlParameters?["page"] = page
}
}
// Send request
private let manager = YMNetworkManager(
configuration: YMNetworkConfiguartion(
baseURL: environment.baseURL,
headers: [:]
)
)
let request = MovieRequest(page: 1)
manager.request(request) { (response, result: YMResult<T>, error) in
if error != nil {
completion(nil, "Please check your network connection")
}
switch result {
case .success(let data):
completion(data, nil)
case .failure(let error):
completion(nil, error.rawValue)
}
}
文件上传
您可以通过将文件的URL传递给YMUploadRequest
来上传您的文件。
struct UploadRequest: YMUploadRequest {
var fileURL: URL?
var path: String = "post"
init(fileURL: URL?) {
self.fileURL = fileURL
}
}
let request = UploadRequest(fileURL: Bundle.main.url(forResource: "cat", withExtension: "jpg"))
private let manager = YMNetworkManager(
configuration: YMNetworkConfiguartion(
baseURL: environment.baseURL,
headers: [:]
)
)
manager.request(request) { (response, result: YMResult<T>, error) in
if error != nil {
completion(nil, "Please check your network connection")
}
switch result {
case .success(let data):
completion(data, nil)
case .failure(let error):
completion(nil, error.rawValue)
}
}
安装
CocoaPods
嗯...YMNetwork
在cocoapods中已被占用。您应该将pod安装为pod 'YMNetwork-Swift'
,但在代码中引入框架时,只需使用import YMNetwork_Swift
。
请查看开始标签页,在cocoapods.org上。
要在您的项目中使用YMNetwork,请将以下'Podfile'添加到项目中
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'YMNetwork-Swift'
然后运行
pod install
Carthage
查看如何在Carthage中添加安装的相关文档。YMNetwork
框架已配置了共享方案。
您可以使用以下命令通过Homebrew安装Carthage
$ brew update
$ brew install carthage
要使用Carthage将YMNetwork集成到您的Xcode项目中,请在其Cartfile
中指定它
github "miletliyusuf/YMNetwork" >= 1.0.0
待办事项
- 更好的上传管理
- 图片缓存
- 增强对URLSession配置的支持
- 使用Data进行上传
- 更好的文档
Meta
Yusuf Miletli – LinkedIn,[email protected]
按照MIT许可证发布。有关更多信息,请参阅LICENSE
文件。