每次用AFN的時(shí)候,總覺(jué)得有比較好用的,建立一個(gè)單例,建立mananger,抽取出baseURL就可以可以了.封裝的很好,方便快捷,堪稱(chēng)程序員之友.
但是,今天腦洞一開(kāi),想了一下(本文章是基于swift2.0語(yǔ)法的)
- 發(fā)現(xiàn)很多地方都直接 調(diào)用AFN GET方法
NetworkTool.sharedInstance.afnManager.GET
,這樣有一個(gè)問(wèn)題,如果有一天 afnManager.GET方法添加史侣、修改处渣、刪除了參數(shù).那么我們所有使用 AFN GET 方法都需要修改,所以需要將afnManager.GET進(jìn)行封裝
自己來(lái)封裝GET請(qǐng)求,外面都直接調(diào)用requestGET
,如果AFN以后不好用,想換其他的框架或者AFN升級(jí)請(qǐng)求參數(shù)更換了,我們只需要修改requestGET
里面的內(nèi)容,外面不同修改
func requestGET(URLString: String, parameters: AnyObject?, success: ((NSURLSessionDataTask, AnyObject?) -> Void)?, failure: ((NSURLSessionDataTask?, NSError) -> Void)?) {
afnManager.GET(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
}
-
在
NetworkTools
添加requestGET
方法,封裝afnManager.GET
方法.func requestPOST(URLString: String, parameters: AnyObject?, success: ((NSURLSessionDataTask, AnyObject?) -> Void)?, failure: ((NSURLSessionDataTask?, NSError) -> Void)?) { afnManager.POST(URLString, parameters: parameters, progress: nil, success: success, failure: failure) }
發(fā)現(xiàn)封裝后的 requestGET 和 requestPOST 方法里面,除了調(diào)用 AFN 的方法名稱(chēng)不一樣外,其他的一模一樣,那么這個(gè)時(shí)候,我們可以將這2個(gè)方法合成一個(gè)方法,根據(jù)不同的請(qǐng)求方式調(diào)用不同的 AFN 方法
定義 請(qǐng)求方法枚舉
// MARK: - 請(qǐng)求方法枚舉
enum CZNetworkMethod: String {
case GET = "GET"
case POST = "POST"
}
定義request方法
/**
網(wǎng)絡(luò)請(qǐng)求封裝
parameter method: 請(qǐng)求方式
parameter URLString: 請(qǐng)求URL地址
parameter parameters: 請(qǐng)求參數(shù)
parameter success: 請(qǐng)求成功回調(diào)
parameter failure: 請(qǐng)求失敗回
*/
func request(method: CZNetworkMethod, URLString: String, parameters: AnyObject?, success: ((NSURLSessionDataTask, AnyObject?) -> Void)?, failure: ((NSURLSessionDataTask?, NSError) -> Void)?) {
switch method {
case .GET:
afnManager.GET(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
case .POST:
afnManager.POST(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
}
}
這是一個(gè)完整的封裝AFN代碼過(guò)程,改完后以后公司就算改用其他的網(wǎng)絡(luò)請(qǐng)求第三方,只需要把請(qǐng)求方法改掉,而不用在每處調(diào)用網(wǎng)絡(luò)請(qǐng)求的位置修改,方便快捷,而且還可以選擇GET還是POST,實(shí)現(xiàn)了最大的快捷.
我是愛(ài)碼字的程序猿,網(wǎng)絡(luò)請(qǐng)求一般都是項(xiàng)目開(kāi)始的時(shí)候做的,如果接觸的老項(xiàng)目一般都已經(jīng)做好了,一般都不想改這么基礎(chǔ)的東西,萬(wàn)一有時(shí)候需要改呢,例如這次蘋(píng)果所有網(wǎng)絡(luò)請(qǐng)求走https
,謝謝查閱!比較簡(jiǎn)單,就不上代碼了.