专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
封装AFN网络请求
发现很多地方都直接 调用
AFNGET方法HMNetworkTool.shared.afnManager.GET,这样有一个问题,如果有一天afnManager.GET方法添加、修改、删除了参数.那么我们所有使用AFNGET方法都需要修改,所以需要将afnManager.GET进行封装在
HMNetworkTool添加requestGET方法,封装afnManager.get方法./// 自己来封装GET请求,外面都直接调用requestGET,如果AFN以后不好用,想换其他的框架或者AFN升级请求参数更换了,我们只需要修改requestGET里面的内容,外面不同修改 func requestGET(URLString: String, parameters: Any?, progress: ((Progress) -> Void)?, success: ((URLSessionDataTask, Any?) -> Void)?, failure: ((URLSessionDataTask?, Error) -> Void)?) { // 调用AFN的get afnManager.get(URLString, parameters: parameters, progress: progress, success: success, failure: failure) }在
HMNetworkTool添加requestPOST方法,封装afnManager.post方法.func requestPOST(URLString: String, parameters: Any?, progress: ((Progress) -> Void)?, success: ((URLSessionDataTask, Any?) -> Void)?, failure: ((URLSessionDataTask?, Error) -> Void)?) { // 调用AFN的post afnManager.post(URLString, parameters: parameters, progress: progress, success: success, failure: failure) }发现封装后的
requestGET和requestPOST方法里面,除了调用AFN的方法名称不一样外,其他的一模一样,那么这个时候,我们可以将这2个方法合成一个方法,根据不同的请求方式调用不同的AFN方法- 定义
请求方法枚举// MARK: - 请求方法枚举 enum HMNetworkMethod: String { case GET = "GET" case POST = "POST" } 定义request方法
/** 网络请求封装 parameter method: 请求方式 parameter URLString: 请求URL地址 parameter parameters: 请求参数 parameter success: 请求成功回调 parameter failure: 请求失败回调 */ func request(method: HMNetworkMethod, URLString: String, parameters: Any?, progress: ((Progress) -> Void)?, success: ((URLSessionDataTask, Any?) -> Void)?, failure: ((URLSessionDataTask?, Error) -> Void)?) -> Void { switch method { case .GET: // 调用AFN的get afnManager.get(URLString, parameters: parameters, progress: progress, success: success, failure: failure) case .POST: // 调用AFN的post afnManager.post(URLString, parameters: parameters, progress: progress, success: success, failure: failure) } }
- 定义