Swift学习笔记(三)Alamofire二次封装
Alamofire如何集成可以查看这里
创建一个BaseHttpClient类,在Alamofire基础之上二次封装
func requestURL(url:String, params:Dictionary, method:HTTPMethod, success:((_ responseObj:Dictionary?) -> Void)?, failure:((_ e:Error) -> Void)?) -> Void {
request(url, method: method, parameters: params, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
if(response.error == nil){
success!(response.result.value as? Dictionary)
}else{
failure!(response.error!)
}
}
}
【Swift学习笔记(三)Alamofire二次封装】创建一个BaseHttpClient的子类,命名为HttpClient,主要用于业务接口的URL、入参、回参做第一层处理
例如业务接口返回格式如下图所示:Controller和View层需要使用的是data键对应的内容
文章图片
image.png 使用二次封装的requestURL方法,处理回参数据,只有当status=200时才去解析data键值,其他情况均failure Block一个HttpExceptiont对象,用于提示用户错误信息
func requestPath(Url:String, Params:Dictionary, Method:HTTPMethod, success :((_ responseObj:Dictionary?) -> Void)?, failure:((_ e:HttpException) -> Void)?) -> Void {self.requestURL(url: Url, params: Params, method: Method, success: { (responseObj) in//处理业务接口
let status = responseObj!["status"] as! Int//获取statusif status == 200{//取data对应的键值,Block successsuccess?(responseObj!["data"] as? Dictionary)
}else{//初始化HttpException对象,Block failurelet e = HttpException.init(code: status, msg: responseObj!["message"] as! String)
failure!(e)
}
}) { (e) in//初始化HttpException对象,Block failure
let error = e as NSError
let e = HttpException.init(code: error.code, msg: error.description)
failure!(e)
}
}
另外我们可以在HttpClient类中添加URL拼接、修改header、入参数据加密等
还可以将请求封装成类方法:
//GET
class func GET(url:String, params:Dictionary, success:((_ responseObj:Dictionary?) -> Void)?, failure:((_ e:HttpException) -> Void)?) -> Void {
HttpClient().requestPath(Url: url, Params: params, Method: .get, success: { (responseObj) in
success!(responseObj)
}) { (e) in
failure!(e)
}
}
在其他文件中可以这样调用GET请求:
HttpClient.GET(url: requestURL, params: param, success: { (responseObj) in}) { (e) in}
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习