简介
Alamofire是一个用Swift编写的HTTP网络库。
大部分iOS开发的同学对于AFNetworking这个框架应该是非常熟悉的.很多App 都使用这个框架来进行网络访问.而Alamofire
就是由AFNetworking
的开发团队编写的Swift版网络框架.并且是基于Apple
的NSURLSession
封装的,它在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
默认网络任务是挂起的,调用执行开始连接请求网络:三次握手... -
URLSessionDelegate
URLSession的代理,请求结果成功或者失败都会回到对应的代理方法.
URL Loading System
iOS的网络开发(URL Loading System)的类层次如下:
-
使用NSURLSession来进行HTTP/HTTPS请求的实际的过程如下:
- 建立
NSURLSessionTask
,并且resume
. - 检查cache策略,如果有需要从本地cache中直接返回数据
- 通过DNS进行域名查找
- 建立TCP连接
- 如果是HTTPS,进行TLS握手(如有资源需要认证访问,可能需要客户端提供证书,用户名密码等信息)
- 请求开始,收到HTTP的Response
- 接收HTTP的Data
Alamofire
-
整体架构如下:
- 左侧是暴露给外部的接口,右侧是内部实现相关
-
AlamofireImage - 包含图像响应序列化器
UIImage
和UIImageView
扩展,自定义图像过滤器,自动清除内存缓存和基于优先级的图像下载系统的图像库。 -
AlamofireNetworkActivityIndicator - 使用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类型(Alamofire
用extension
的方式为URL
,String
,URLComponents
,URLRequest
等实现了这个协议) -
method
请求的HTTP方法,默认为GET -
parameters
请求的参数,默认为nil -
encoding
参数编码类型,默认URLEncoding.default,也就是根据HTTP方法的类型决定参数是query或者body里 -
headers
: HTTP 的请求头 - 返回值是一个
DataRequest实例
,这个实例就是异步调用链的头部。
网友评论