上一篇文章介绍了AFNetworking网络库,作为它的姊妹Alamofire,不得不介绍下。
Alamofire是使用Swift语言开发的网络库,它和AFNetworking是同一班子的开发团队。
Alamofire使用链式编程实现的。具有简洁的语法,良好的性能和优秀的可读性等特点。
Alamofire,本质上是基于NSURLSession进行封装的,其核心是URLSession和URLSessionTask子类。其早期版本使用Alamofire.request(),5.0之后使用AF.request()。
https://github.com/Alamofire/Alamofire
github上介绍了三种导入方法(CocoaPods,Carthage,Swift Package Manager)。
今天详细介绍下Swift Package Manager(SPM)的方式。
具体步骤如下:
1.使用Xcode新建一个TestAlamofire工程,完成基本工程模块。
Frameworks,Libraries,and Embedded Content
如下图
3.点击加号后,进入库资源界面。由于Alamofire不是系统库,不能在系统列表库中查找到,需要外部链接。点击如下图所示。选择Add Package Dependency…
4.进入Apple Swift Page界面。在该界面右上角搜索框内,复制粘贴Alamofire官网的地址
https://github.com/Alamofire/Alamofire.git进行搜索Alamofire。
在搜索到Alamofire库后,可以修改想下载链接的版本号。默认是下载最新的版本。选择好之后,点击Add Package。就静静等待下载。
这样就完成了Alamofire的导入。
三、Alamofire的使用
func sendReq() -> Void {
AF.request("https://httpbin.org/get").response { response in
switch response.result {
case let .success(data):
print("data:(String(describing: data))")
case let .failure(error):
print(error)
}
}
}
上述代码主要是向测试网站发送一个GET请求并打印返回成功和失败的数据。
针对AF的request请求接口,Alamofire封装了三个同名接口,三个接口是针对不同的参数进行设置的。
open func request(_ convertible: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil,
interceptor: RequestInterceptor? = nil,
requestModifier: RequestModifier? = nil)
open func request<Parameters: Encodable>(_ convertible: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoder: ParameterEncoder = URLEncodedFormParameterEncoder.default,
headers: HTTPHeaders? = nil,
interceptor: RequestInterceptor? = nil,
requestModifier: RequestModifier? = nil)
open func request(_ convertible: URLRequestConvertible, interceptor: RequestInterceptor? = nil)
参数二 method
请求方式。就是我们常说的GET,POST,DELTE等方式。
请求参数。业务数据的参数部分,如登录模块的userName,Password等之类的业务数据。
URLEncodedFormParameterEncoder
若encoding设置为JSONEncoding, 即为JSON格式。
对应的 Content-Type 为 application/json,
一般在method为POST情况下,把参数数据以JSON格式放入HTTPBody里面。
若encoding设置为URLEncodeing, 即为ur追加格式。
对应的 Content-Type 为application/x–www–form–urlencoded; charset=utf-8,
一般在method为GET情况下,把参数数据以&key=value&key2=value2…格式方式追加url之后。
参数五 headers
请求头参数。http请求中请求头的参数设置,支持Json格式,例如设置token,cookie等参数。
参数六 interceptor
请求拦截器,主要用来在请求流程中拦截请求,并对请求进行一些必要的处理。支持RequestInterceptor协议。这个是高阶部分,不详细说。
参数七 requestModifier
请求修改器。在请求流程中修改数据,例如针对特定请求,不使用默认超时时间,而自定义超时时间。
Alamofire支持4种返回响应处理方式:Data、String、 JSON、自定义类型。下面分别举例说明
let url = "https://httpbin.org/get"
//Data示例
AF.request(url).responseData { response in
switch response.result {
case let .success(data):
print("data:(String(describing: data))")
case let .failure(error):
print(error)
}
}
//String示例
AF.request(url).responseString { response in
switch response.result {
case let .success(data):
print("data:(String(describing: data))")
case let .failure(error):
print(error)
}
}
//JSON示例
AF.request(url).responseJSON { response in
switch response.result {
case let .success(data):
print("data:(String(describing: data))")
case let .failure(error):
print(error)
}
}
//自定义格式示例
struct PersonResponse: Decodable { let name: String, let nickName : String, let age : Int }
AF.request(url).responseDecodable(of: PersonResponse.self) { response in
switch response.result {
case let .success(data):
print("data:(String(describing: data))")
case let .failure(error):
print(error)
}
}
以上就是Alamofire网络库等介绍。
原文地址:https://blog.csdn.net/nogodoss2018/article/details/126394787
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_10189.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!