Moya作為Swift中很受歡迎的一款網(wǎng)絡(luò)框架,它的基礎(chǔ)使用方法在網(wǎng)上可以找到很多教程蹋凝,這里就不再贅述,今天主要想要記錄下moya中的一些容易被忽略卻又很好用的用法。
MoyaProvider
初始化moyaProvider時(shí)感凤,我們可以看到初始化方法中有很多可選參數(shù)
接下來(lái)對(duì)每個(gè)參數(shù)做出解釋和常用用法舉例
endpointClosure
在這個(gè)closure存放了一些moya進(jìn)行網(wǎng)絡(luò)請(qǐng)求前的一些數(shù)據(jù)
requestClosure
可以從endpoint中拿到request請(qǐng)求進(jìn)行修改
這個(gè)閉包是moya提供給我們對(duì)網(wǎng)絡(luò)請(qǐng)求開(kāi)始前最后一次機(jī)會(huì)對(duì)請(qǐng)求進(jìn)行修改,比如設(shè)置超時(shí)時(shí)間(默認(rèn)是60s)粒督,禁用cookie等
moya請(qǐng)求的實(shí)質(zhì):target—>endpoint—>NSRequest
stubClosure
moya提供該閉包可以方便的提供測(cè)試陪竿。
如果設(shè)置了stubClosure,則moya會(huì)在成功或失敗的回調(diào)中返回sampleData中的數(shù)據(jù)屠橄,例如當(dāng)我傳了stubClosure為MoyaProvider.delayedStub(1)族跛,那么當(dāng)我調(diào)用登陸接口后,就會(huì)延遲1s返回sampleData中的數(shù)據(jù)锐墙,這在單元測(cè)試中相當(dāng)有用
Moya提供了如下三種策略礁哄,用于模擬網(wǎng)絡(luò)請(qǐng)求
manager
moya并不是網(wǎng)絡(luò)請(qǐng)求庫(kù),它只提供網(wǎng)絡(luò)請(qǐng)求的橋接溪北,通過(guò)manager來(lái)設(shè)置網(wǎng)絡(luò)請(qǐng)求庫(kù)桐绒,默認(rèn)使用的是alamofire。通過(guò)該參數(shù)可以方便的替換網(wǎng)絡(luò)請(qǐng)求庫(kù)
plugins
可以通過(guò)設(shè)置插件的方式為網(wǎng)絡(luò)請(qǐng)求設(shè)置一些額外的功能之拨,防止很多功能雜糅在一起掏膏,不方便維護(hù)。
實(shí)現(xiàn)pluginType可以實(shí)現(xiàn)在網(wǎng)絡(luò)請(qǐng)求前轉(zhuǎn)菊花敦锌,請(qǐng)求完成結(jié)束轉(zhuǎn)菊花馒疹,或者寫(xiě)日志等功能
若有收獲,就點(diǎn)個(gè)贊吧