MinimalNetworking 0.2.0

MinimalNetworking 0.2.0

Ivan Tchernev 维护。



  • Firanus

MinimalNetworking

CI Status Version License Platform

Minimal networking 恰好如其名,是一个简单的、无依赖的网络库,旨在以最简化方式流式传输网络请求,无需任何不必要的装饰。

安装

MinimalNetworking 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile。

pod 'MinimalNetworking'

使用

使用 Minimal Networking 与安装 pod (见安装说明)并初始化 HttpClient 一样简单。从那里,您可以使用 getpost 方法。

get 方法是

let httpService = HttpService()
_ = httpService.get(url: "url_to_hit", 
                    responseContentType: ResponseContentType.json, 
                    additionalHeaders: ["Accept": "application/json"]) 
{ (networkResponse: NetworkResponse<ParsedServerData?>) in
    DispatchQueue.main.async {
        switch networkResponse {
        case .success(let parsedData, let response):
            //use your data
        case .failure(let error):
            //handle the error
        }
    }
}

Minimal Networking 允许您使用 ResponseContentType 枚举指定数据的预期响应类型。如果它是一种受支持的类型(目前仅支持 JSON),则会自动解析服务器响应。

post 方法几乎相同。唯一的区别是它需要一个类型为 POSTBodyEncodable 的 body 参数,该参数必须提供表示如何将类解码为 bodyParam 的 String。

struct PostQuery: POSTBodyEncodable {
  //struct implementation details...

  var asFormUrlEncoded: String = "minimalNetworking=Awesome!"
}
_ = httpService.post(url: "https://httpbin.org/post", 
                    body: PostQuery(), 
                    responseContentType: ResponseContentType.json, 
                    additionalHeaders: ["Accept": "application/json"]) 
{     (networkResponse: NetworkResponse<PostResponse?>) in 
  //completion handler functionality
}

解析的响应被返回给用户,结构如下所示:

public enum NetworkResponse<T> {
    case success(T, HTTPURLResponse)
    case failure(Error)
}

在成功的情况下,您将返回解析后的类和 HTTPUrlResponse 类。否则,您将收到一个包含错误详细信息的失败消息方法。

示例

要运行示例项目,请克隆仓库,然后在示例目录中运行 pod install

需求

MinimalNetworking 需要 iOS 9.3 或更高版本。更新您的项目。

未来

Minimal Networking Pod 还处于预发布状态,在正式发布前仍有多项功能计划。这些包括:

  • 支持更多请求类型
  • 提供自动将类编码为 POST 体的功能
  • 更好地支持不期望返回数据的请求
  • 等等!

请查看 Github 项目的标签页获取更多信息。

作者

Firanus, [email protected]

许可证

MinimalNetworking 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。