2011-08-02 60 views
1

背景: 我處於iPhone應用程序和REST WebService產品的早期階段。基本上,我有一個服務器上的數據庫,並編寫了一些REST API來訪問這個數據庫。我有一個將使用這些REST API的伴侶iphone應用程序。REST API和iPhone應用程序體系結構和代碼結構

問題: 放置訪問REST Apis的代碼的最佳方法是什麼?我應該創建NSObject的一個單獨的子類並在那裏放置接口和實現細節?我希望減少與REST API交互的各種ViewController中整個應用程序中的代碼重複數量。

例如: 我的應用程序將啓動並進行REST API調用,以通過比較從API返回的值與本地值來確定設備上本地信息的當前狀態。然後,我將從API發起更新請求以刷新本地數據存儲。

現在,如果我在啓動ViewController中擁有所有這些邏輯,那麼我使用NSURLConnection進行多個調用,而NSURLConnection只對委託進行調用。我不知道如何在同一個ViewController中進行這些單獨的調用。

解決此問題的方法有哪些?

回答

1

我通常創建使用ASIHTTPRequest(使用組合,而不是子類)的自定義對象,它可以使用任何必需的參數進行初始化,並使用它來管理對RESTful服務的請求。自定義對象將提供用於處理成功,失敗和其他自定義通知的委託協議,以便我可以在請求異步執行時使用此反饋來更新應用程序UI。

如果您需要解析請求返回的大量數據,請確保您啓動一個單獨的線程來執行此操作,而不是在您的HTTP請求成功回調中執行此操作,否則會使網絡活動微調器保持活動狀態比實際應該。

如果您需要管理同一類型的多個請求,您可以爲您的自定義請求添加一個「標記」屬性,以便在調用成功/失敗委託響應時,可以輕鬆地確定它屬於哪個請求而不必爲原始請求保留一個實例變量。