2012-06-04 92 views
1

我正在就以下計劃尋求建議,這些計劃是針對我的某個未來項目的。尋求移動客戶端 - 服務器應用程序策略的建議

  • 大圖片
    • 我想製作一個移動客戶端(的iOS,安卓,Windows手機等)將查詢(讀/寫)從我的網站數據庫並顯示其結果。
    • 加上其他幾個功能...

我知道,從客戶端直接訪問數據庫(繞過web服務器)是一個壞主意,特別是在互聯網上。無論如何,我認爲大多數共享虛擬主機計劃都是禁止的。所以這裏是我想要的解決方案...

  1. 移動客戶端通過API調用向web服務器發送數據。
  2. Web服務器處理REST API調用並查詢數據庫。網絡服務器作爲移動客戶端和數據庫服務器之間的中間件。
  3. 網絡服務器接收來自數據庫查詢的結果並將它們傳遞給移動客戶端。
  4. 移動客戶端顯示/處理客戶端的數據。

我對API的使用經驗僅限於Twitter,Instagram和Google Shopping API的使用。根據我的經驗,以JSON格式在移動設備和網絡服務器之間傳輸數據似乎是最好的。

現在,這裏是我的關注...

  1. 我如何可以確保只有登錄的用戶可以使用該API? OAuth是解決方案嗎?
  2. 對於REST API,如果它是RESTful,它會更好嗎?

該網站的當前環境是與PHP和MySQL共享主機,但我想在未來將其轉移到基於雲的服務。我打算使用CodeIgniter或CakePHP或Apify實現中間件。

如果有人能評論我的計劃或者提出比我頭腦中的更好的選擇,我將不勝感激。

在此先感謝。

+0

你的第一個問題是可以辯論的。你的第二個問題沒有意義。也許你的意思是,對於HTTP API,如果它是RESTful,它會更好嗎?在這種情況下,它也是有爭議的。 – Herbert

回答

3

REST可能是您尋找的最佳架構。您獲得的RESTful越多,效果越好。

OAuth是一個授權協議,它處理哪些網站有權使用您的憑證。 授權認證不同,但可以使用來自另一方的授權來確保認證。

OAuth的選擇取決於您正在構建的服務。例如,如果您的應用程序基於Twitter,則使用Twitter OAuth進行身份驗證是有意義的。

如果您的服務將提供自己的憑據,每個用戶都有您自己的用戶名/密碼,OAuth可能不是最佳選擇。在這種情況下,您需要設置一個OAuth客戶端和一個OAuth服務器,這不是必需的。

對於自己的驗證,HTTP Digest Auth是一個不錯的選擇:它很容易實現,很多庫已經支持它,並且它在大多數情況下足夠安全。


避免PHP中的會話和cookie。 REST是無狀態的,並且這些功能在服務器上充滿了客戶端狀態。

如果有一天您需要將服務擴展到更多的服務器,那麼在它們之間同步會話是很痛苦的。

照顧緩存標題,如Expires,ETagLast-Modified。它們可以提高API的整體性能,並且可以設置一個反向代理(服務器和客戶端之間的中間件),以便爲您緩存內容。

API上的公共數據不應要求驗證。緩存驗證數據時,不能在不同用戶之間共享此緩存。公共數據緩存可以共享。

JSON和XML都很容易處理和操作。有時JSON更好,有時候XML是。有關這些格式差異的更多信息,請參見this answer

看看Respect\Rest,VarnishFrapi。這些對於REST API來說是很棒的工具。

相關問題