2011-02-26 90 views
7

我一直在開發iOS應用程序一段時間,但他們都處理設備上的信息。如何創建我自己的Web API/Web服務

我想擴大我的知識和我的應用程序的吸引力。

我需要的是一個關於如何創建我自己的在線SQL數據庫和API來訪問所有信息的好教程。

我已經使用了多個API(Twitter,Facebook,Google等),所以在iOS端準備就緒。

我很想用Google App Engine來實現它,但如果你知道實現這一點的方法,我很樂意聽到它們;我聽說Java,.net和Ruby是最好的選擇。

我在網上發現了很多教程,但我知道堆棧溢出用戶有大量資源的知識,可以幫助我和其他開發人員更快,更輕鬆地學習和學習更多。

我認爲這個問題的答案對於所有對Wb API感興趣的開發者來說都是一個很好的資源。

非常感謝您的幫助。

回答

7

恕我直言,AppEngine是一個很好的選擇,因爲幾乎不需要安裝/管理它。此外,它還預裝了強大的服務,如數據存儲,任務隊列,用戶身份驗證,消息傳遞等。對我來說,最大的優勢是數據存儲,它是無模式的,所以您不必隨着應用程序的進展而不斷更新/管理架構。

缺點是它有一些不同的編程模型,所以來自servlet + SQL背景的開發人員一開始就傾向於使用它。既然你是新手,這應該不成問題。

以下我的所有建議都是Java,因爲這是我所知道的。希望其他人會張貼其他平臺/語言的答案。

爲了得到這個運行,你將需要:

  1. 設置Web服務。使用REST,因爲這是最常見和易於設置/使用的。我嘗試了所有主要的Java REST框架,最終以Resteasy,因爲它只是工作,並有恕我直言,最好的文檔。

  2. 瞭解GAE Datastore如何工作。有幾個API可用於數據存儲:

    a。因爲您需要使用它的模型類(實體),因此低級別很麻煩,所以您會在對象和由此API返回的實體對象之間進行大量複製。

    b。 JDO/JPA是java ORM標準,但是它們是爲SQL數據庫而創建的,並且真正在數據存儲上佔據一席之地。我建議不要使用它們,因爲它們只是低級別的附加層,並且只是試圖欺騙開發人員,使Datastore成爲SQL數據庫。

    c。 Objectify。這是第三方的OSS庫,但作者是由Google支持的AFAIK。它是一個低層次的層次,但以一種非常自然的方式,因此不會模糊Datastore功能。我建議使用它。

  3. 認證。你會需要認證。GAE支持開箱即用的OpenID/OAuth(只需在命令面板中勾選federated login選項)。現在棘手的部分是讓這個iPhone和其他設備的工作:

    a。要求用戶將Google憑據輸入到iPhone應用程序中。有些用戶不願意這樣做(例如我)。在這種情況下,使用iPhone OAuth client

    b。在嵌入式瀏覽器中打開一個OpenID登錄網頁:Authenticating with Stack Overflow programmatically

0

我在「原始」 PHP/MySQL的(沒有框架)做了幾個應用程序後端。這種方法的優勢在於它確實很容易實現,而且現有的每個託管公司都支持PHP和MySQL。如果您的後端專門用於iphone,您甚至可以以plist-format xml格式返回所有需要零解析的數據,並可以立即將其轉換爲iPhone應用程序中的字典/數組。

另一個優點是你可以在你的開發系統或家庭網絡上建立一個測試服務器,你可以通過iphone模擬器甚至你的iphone設備在本地測試後端,只要你使用IP地址而不是名字(如果你是一個優秀的系統管理員/網絡人員,你也可以設置它來使用你的網絡名稱)。

原始PHP/MySQL的缺點是你沒有獲得免費的管理員界面來管理/編輯像django這樣的大多數框架的數據實體。另一個缺點是擴展到大量的流量 - 但如果您使用合理的託管服務,這可能不成問題。

有大量的書籍和材料在線做php/mysql的網站。

+0

所有「框架」(包括AppEngine)都可以讓您運行本地開發服務器。 – 2011-02-26 17:50:54