猿題庫基于AFNetworking封裝:YTKRequest
YTKRequest是什么
YTKRequest是猿題庫基于AFNetworking封裝的一套High Level的API,用于提供更高層次的網絡訪問抽象。它現在同時被使用在猿題庫公司的所有產品的iOS端,包括:猿題庫、小猿搜題 、粉筆直播課 。
YTKRequest提供了哪些功能
相比AFNetworking,YTKRequest提供了以下更高級的功能:
- 支持按時間緩存網絡請求內容
- 支持按版本號緩存網絡請求內容
- 支持統一設置服務器和CDN的地址
- 支持檢查返回JSON內容的合法性
- 支持文件的斷點續傳
- 支持
block
和delegate
兩種模式的回調方式 - 支持批量的網絡請求發送,并統一設置它們的回調(實現在
YTKBatchRequest
類中) - 支持方便地設置有相互依賴的網絡請求的發送,例如:發送請求A,根據請求A的結果,選擇性的發送請求B和C,再根據B和C的結果,選擇性的發送請求D。(實現在
YTKChainRequest
類中) - 支持網絡請求URL的filter,可以統一為網絡請求加上一些參數,或者修改一些路徑。
- 定義了一套插件機制,可以很方便地為YTKRequest增加功能。猿題庫官方現在提供了一個插件,可以在某些網絡請求發起時,在界面上顯示"正在加載"的HUD。
哪些項目適合使用YTKRequest
YTKRequest適合稍微復雜一些的項目,不適合個人的小項目。
如果你的項目中需要緩存網絡請求、管理多個網絡請求之間的依賴、希望檢查服務器返回的JSON是否合法,那么YTKRequest能給你帶來很大的幫助。如果你緩存的網絡請求內容需要依賴特定版本號過期,那么YTKRequest就能發揮出它最大的優勢。
YTKRequest的基本思想
YTKRequest的基本的思想是把每一個網絡請求封裝成對象。所以使用YTKRequest,你的每一個請求都需要繼承YTKRequest
類,通過覆蓋父類的一些方法來構造指定的網絡請求。
把每一個網絡請求封裝成對象其實是使用了設計模式中的Command模式,它有以下好處:
- 將網絡請求與具體的第三方庫依賴隔離,方便以后更換底層的網絡庫。實際上YTKRequest最初是基于ASIHttpRequest的,我們只花了兩天,就很輕松地切換到了AFNetworking。
- 方便在基類中處理公共邏輯,例如猿題庫的數據版本號信息就統一在基類中處理。
- 方便在基類中處理緩存邏輯,以及其它一些公共邏輯。
- 方便做對象的持久化。
當然,如果說它有什么不好,那就是如果你的工程非常簡單,這么寫會顯得沒有直接用AFNetworking將請求邏輯寫在Controller中方便,所以YTKRequest并不合適特別簡單的項目。
相關的使用教程和Demo
我們會盡快提供。
YTKRequest的作者
YTKRequest的主要作者是:tangqiaoboy、lancy、maojj
開源協議
MIT開源協議
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!