2011-05-31 58 views
3

我目前正在探索構建不太複雜的Web應用程序的不同選項,其中涉及基於角色的訪問控制。此外,必須執行對少量數據庫表(考慮5個左右)的不同數據庫表的讀/寫操作。在webapp中實現自定義RESTful接口時需要考慮什麼?

我一直在創建一個基於JSON的API,其中一個或幾個PHP文件充當數據庫頂層的圖層。 Web應用程序本身將完全是'靜態的'HTML和JavaScript,使用XHR從服務器檢索數據,並最終將內容寫回給它。一個例子就是當前的Twitter主頁 - 在查看用戶的時間表時,實際上並沒有在最初的HTML中傳遞任何推文:這些推文都是通過一些漂亮的javascript獲取的。

我看到的一個重要的缺點是,Googlebot很難爲這類網站編制索引。該應用程序的幾個組件應該像常規的已發佈內容一樣運行,這些內容可以在Google搜索結果中顯示而不會造成麻煩例如,Twitter如何實現這一目標?當他們的服務器被網絡爬蟲接近時,他們是否提供了不同的頁面?

另外,我想聽聽關於這個概念的一些想法......對我來說,它似乎是一種將業務邏輯與表示分離開來的非常有趣和乾淨的方式,但是和往常一樣,我可能會出現可怕的錯誤: )

回答

3

嗯,這是一個全球性的問題,這將需要一個大的答案:)

首先,關於你的Twitter的問題,他們使用hashbang URI風格。 例如,當您轉到twitter.com/cx42net時,系統會自動將您重定向到twitter.com/#!/cx42net

它代表着Google我的世界它的爬行者,抓取工具會通過?_escaped_fragment=更改#!。 對於twitter,它會導致爲:http://twitter.com/?_escaped_fragment=/cx42net

我不會去深入的細節,以避免告訴失誤,一個很好的鏈接很好首選,所以在這裏我們去:現在SEOMoz: How To: Allow Google to Crawl your AJAX Content

,在REST風格的Web應用程序,我真的很喜歡將客戶端與服務器分開的想法,我也嘗試這樣工作。

您正在談論基於角色的訪問,這意味着您必須識別您的用戶才能允許/拒絕訪問您的API的某些部分。 有關於如何將用戶在API認證兩所學校:

  • 「使用基本HTTP認證」的學校
  • 的「使用OAuth認證/授權」學校

前實現起來非常簡單,但我建議你通過HTTPS來完成,因爲密碼是通過網絡發送的。

後來是偉大的,但方式更復雜的實施。

但事實上,它可能完全符合你的要求,因爲儘管驗證了你的用戶,你可以讓他們訪問API的某些部分,並限制他們的其他部分。一個常見的例子是Facebook/Twitter如何工作,我相信您已經允許第三方應用使用您的Twitter/Facebook帳戶。

現在,使用OAuth通常會強制您在數據庫中存儲登錄名/密碼錶。您可以使用OpenID,但這比起簡化用戶更令人頭疼: 您必須從OpenId提供程序(如Google)驗證它們,然後重定向到您的API以允許訪問(如果是第一次),那麼重定向你的用戶到你的應用程序。

最後,我還要舉Fred Wilson,在10 Golden Principles of Successful Web App是:

  • 速度
  • 即時效用
  • 少即是多
  • 讓它可編程
  • 清潔
  • ...

那麼,現在會做,如果我有任何其他的想法,我會編輯答案並添加評論。

相關問題