Alamofire4.x开源代码分析(一)使用方法
发布时间:2020-12-14 06:13:48 所属栏目:百科 来源:网络整理
导读:本着了解框架的实现思路和学习Swift的目的开启本系列的博客.本系列参考Alamofire官方文档和自己的一些理解,欢迎指正和指教. 配置要求 iOS 8.0+,macOS 10.10.0+,tvOS 9.0+ and watchOS 2.0+ Xcode 8.1+ Swift 3.0+ 简单使用 Alamofire.request("https://httpb
本着了解框架的实现思路和学习Swift的目的开启本系列的博客.本系列参考Alamofire官方文档和自己的一些理解,欢迎指正和指教. 配置要求
简单使用Alamofire.request("https://httpbin.org/get").responseJSON { response in print("Request: (String(describing: response.request))") // // 原始的请求 print("Response: (String(describing: response.response))") // http 请求响应 print("Result: (response.result)") // 响应结果标识 if let json = response.result.value { print("JSON: (json)") // JSON序列化的数据 } if let data = response.data,let utf8Text = String(data: data,encoding: .utf8) { print("Data: (utf8Text)") // 经过UTF-8编码的数据 } } 不难看出alamofire用了链式编程的思想. 响应数据类型请求返回五种response // Response Handler -直接返回URL session delegate的数据 func response( queue: DispatchQueue?,completionHandler: @escaping (DefaultDataResponse) -> Void) -> Self // Response Data Handler - 序列化为Data func responseData( queue: DispatchQueue?,completionHandler: @escaping (DataResponse<Data>) -> Void) -> Self // Response String Handler - 序列化成String字符串 func responseString( queue: DispatchQueue?,encoding: String.Encoding?,completionHandler: @escaping (DataResponse<String>) -> Void) -> Self // Response JSON Handler - 序列化成JSON func responseJSON( queue: DispatchQueue?,completionHandler: @escaping (DataResponse<Any>) -> Void) -> Self // Response PropertyList (plist) Handler - 序列化成plist func responsePropertyList( queue: DispatchQueue?,completionHandler: @escaping (DataResponse<Any>) -> Void)) -> Self 被序列化的数据可以用通过resonse中的result.value来获取数据 //也可以同时使用,内部通过线程队列实现 Alamofire.request("https://httpbin.org/get") .responseString { response in print("Response String: (response.result.value)") } .responseJSON { response in print("Response JSON: (response.result.value)") } Response是默认在主线程队列执行异步回调, (queue ?? DispatchQueue.main).async 这里的队列也是可以自定义的,例如: let utilityQueue = DispatchQueue.global(qos: .utility) Alamofire.request("https://httpbin.org/get").responseJSON(queue: utilityQueue) { response in print("Executing response handler on utility queue") } 响应验证validate可以在结果返回之前验证响应状态或类型是否正确,也可以使用默认方式验证.validate() Alamofire.request("https://httpbin.org/get") .validate(statusCode: 200..<300) .validate(contentType: ["application/json"]) .responseData { response in switch response.result { case .success: print("Validation Successful") case .failure(let error): print(error) } } Response缓存Response缓存基于系统的URLCache,如果需要自定义参数在后面 Session Manager Configurations章节中会讲到 系列目录
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |