YMNetwork-Swift 1.0.1

YMNetwork-Swift 1.0.1

miletliyusuf 维护。



YMNetwork

Swift 编写的 HTTP 网络库。

YMNetwork

Swift Version Build Status License Carthage compatible CocoaPods Compatible
Platform PRs Welcome

要求

  • 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框架已配置了共享方案。

Carthage 安装

您可以使用以下命令通过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文件。

https://github.com/miletliyusuf/YMNetwork