Alamofire5版本的使用

Alamofire 为 HTTP 网络请求提供了一个优雅且可组合的接口。它没有实现自己的 HTTP 网络功能。取而代之的是,它建立在由 Foundation 框架提供的 URL 加载系统之上。系统的核心是 URLSessionURLSessionTask 子类。Alamofire 将这些 APIs 和许多其他 APIs 封装在一个更易于使用的接口中,并提供使用 HTTP 网络进行现代应用程序开发所必需的各种功能。但是,了解 Alamofire 的许多核心行为来自何处很重要,因此熟悉 URL 加载系统非常重要。归根结底,Alamofire 的网络特性受到该系统功能的限制,应该始终记住并遵守其行为和最佳实践。

此外,Alamofire(以及 URL 加载系统)中的联网是异步完成的。异步编程可能会让不熟悉这个概念的程序员感到沮丧,但是有很好的理由这样做。

另外:AF 命名空间和引用

以前的 Alamofire 文档使用了类似 Alamofire.request() 的示例。这个 API 虽然看起来需要 Alamofire 前缀,但实际上在没有它的情况下也可以。request 方法和其他函数在任何带有 import Alamofire 的文件中都是全局可用的。从 Alamofire 5 开始,此功能已被删除,被更改为 AF ,它是对 Session.default 的引用。这允许 Alamofire 提供同样的便利功能,同时不必每次使用 Alamofire 时都污染全局命名空间,也不必全局复制 Session API。类似地,由 Alamofire 扩展的类型将使用 af 属性扩展来将 Alamofire 添加的功能与其他扩展分开。

发起请求

Alamofire 为发出 HTTP 请求提供了多种方便的方法。最简单的是,只需提供一个可以转换为 URL 的 String

所有示例都需要在源文件中的某个位置 import Alamofire

这实际上是 Alamofire Session 类型上用于发出请求的两个顶层 APIs 的一种形式。它的完整定义如下:

open func request<Parameters: Encodable>(
    _ convertible: URLConvertible,
    method: HTTPMethod = .get,
    parameters: Parameters? = nil,
    encoder: ParameterEncoder = URLEncodedFormParameterEncoder.default,
    headers: HTTPHeaders? = nil,
    interceptor: RequestInterceptor? = nil
) -> DataRequest

此方法创建一个 DataRequest,同时允许组合来自各个组件(如 methodheaders )的请求,同时还允许每个传入 RequestInterceptorsEncodable 参数。

还有其他方法允许您使用 Parameters 字典和 ParameterEncoding 类型来发出请求。不再推荐此 API,最终将被弃用并从 Alamofire 中删除。

这个 API 的第二个版本要简单得多:

open func request(
    _ urlRequest: URLRequestConvertible,
    interceptor: RequestInterceptor? = nil
) -> DataRequest

此方法为遵循 AlamofireURLRequestConvertible 协议的任何类型创建 DataRequest 。所有不同于前一版本的参数都封装在该值中,这会产生非常强大的抽象。这将在我们的高级用法中讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值