Alamofire 初探

简介

Alamofire是一个用Swift编写的HTTP网络库。
大部分iOS开发的同学对于AFNetworking这个框架应该是非常熟悉的.很多App 都使用这个框架来进行网络访问.而Alamofire就是由AFNetworking的开发团队编写的Swift版网络框架.并且是基于AppleNSURLSession封装的,它在Apple的基础网络架构上提供了更加优雅的接口来简化繁重而常用的网络请求任务.

NSURLSession

在学习Alamofire之前,我们先来看一下Apple的请求网络的基本格式.

let configuration = URLSessionConfiguration.background(withIdentifier: self.createID())

let session = URLSession.init(configuration: configuration, delegate: self, delegateQueue: OperationQueue.main)

session.downloadTask(with: url).resume()
  • URLSessionConfiguration 配置信息,比如Cookie的存储策略,TLS版本等等。
  • URLSession提供了一个Session会话对象,它为创建任务提供了一个合理的默认行为。使用共享会话仅用几行代码将URL的内容获取到内存中。
  • dataTask创建一个网络会话数据任务。
  • resume默认网络任务是挂起的,调用执行开始连接请求网络:三次握手...
  • URLSessionDelegateURLSession的代理,请求结果成功或者失败都会回到对应的代理方法.

URL Loading System

iOS的网络开发(URL Loading System)的类层次如下:


Alamofire 初探_第1张图片
  • 使用NSURLSession来进行HTTP/HTTPS请求的实际的过程如下:


    Alamofire 初探_第2张图片
  • 建立NSURLSessionTask,并且resume.
  • 检查cache策略,如果有需要从本地cache中直接返回数据
  • 通过DNS进行域名查找
  • 建立TCP连接
  • 如果是HTTPS,进行TLS握手(如有资源需要认证访问,可能需要客户端提供证书,用户名密码等信息)
  • 请求开始,收到HTTP的Response
  • 接收HTTP的Data

Alamofire

  • 整体架构如下:


    Alamofire 初探_第3张图片
  • 左侧是暴露给外部的接口,右侧是内部实现相关
  • AlamofireImage - 包含图像响应序列化器UIImageUIImageView扩展,自定义图像过滤器,自动清除内存缓存和基于优先级的图像下载系统的图像库。
  • AlamofireNetworkActivityIndi​​cator - 使用Alamofire控制iOS上网络活动指示器的可见性。它包含可配置的延迟计时器,可帮助缓解闪烁,并可支持URLSession非Alamofire管理的实例。
  • NetworkReachabilityManager也是相对独立的用来检测蜂窝移动,WIFI等网络变化的。

基本用法

Alamofire.request(urlStr, method: .get, parameters: nil, encoding: URLEncoding.default, headers: nil).response { (response) in
    
    print("接收到了响应\(response)")
}
  • url 请求的URL,协议URLConvertible类型(Alamofireextension的方式为URL,String,URLComponents,URLRequest等实现了这个协议)
  • method 请求的HTTP方法,默认为GET
  • parameters 请求的参数,默认为nil
  • encoding参数编码类型,默认URLEncoding.default,也就是根据HTTP方法的类型决定参数是query或者body里
  • headers: HTTP 的请求头
  • 返回值是一个DataRequest实例,这个实例就是异步调用链的头部。

你可能感兴趣的:(Alamofire 初探)