猿題庫基于AFNetworking封裝:YTKRequest

jopen 10年前發布 | 133K 次閱讀 iOS開發 移動開發 YTKRequest

YTKRequest是什么

YTKRequest是猿題庫基于AFNetworking封裝的一套High Level的API,用于提供更高層次的網絡訪問抽象。它現在同時被使用在猿題庫公司的所有產品的iOS端,包括:猿題庫小猿搜題粉筆直播課

YTKRequest提供了哪些功能

相比AFNetworking,YTKRequest提供了以下更高級的功能:

  • 支持按時間緩存網絡請求內容
  • 支持按版本號緩存網絡請求內容
  • 支持統一設置服務器和CDN的地址
  • 支持檢查返回JSON內容的合法性
  • 支持文件的斷點續傳
  • 支持blockdelegate兩種模式的回調方式
  • 支持批量的網絡請求發送,并統一設置它們的回調(實現在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的主要作者是:tangqiaoboylancymaojj

開源協議

MIT開源協議

項目主頁:http://www.baiduhome.net/lib/view/home/1414766920887

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!