2012-07-29 23 views
2

Backbone教程我已閱讀實現了某種類型的微型框架(即Slim),其中REST風格的體系結構在服務器db上執行CRUD,like this。骨幹文檔聲明您需要一個RESTful api,我相信這是由於骨幹路由和同步功能使模型保持最新狀態,這是我選擇使用Backbone的一個重要方面。一個Backbone UI和一個CMS後端:通過Restful CRUD涉水

例如,線以下映射一個虛假的URL(路線)的 'addWine' 功能(一個超薄API內):

$app->post('/wines', 'addWine'); 

假設1:如果我有一個(PHP)CMS後端(而不是一個迷你框架)我假設我可以簡單地用我自己的CMS類方法調用替換第二個參數(addWine)並返回一個json對象。

假設2但是我不能直接從HTML中的鏈接調用相同的類方法,而不會導致骨幹丟失狀態,因此它能夠同步模型數據(並記住瀏覽器歷史記錄)。

假設3在這種情況下,我需要通過(Slim)RESTful CRUD調用來使用Slim API和路由骨幹網以訪問我的CMS數據庫以保持骨幹網的快樂。

如果這些假設是正確的,那麼它似乎骨幹網攔截這些HTTP調用 - 這讓我想知道整個RESTful + Backbone關係是如何工作的。你能解釋一些嗎?

如果我的假設是不正確的,那麼我需要比我想象的更多的幫助。你能幫忙嗎?

感謝

回答

1

我不能講緊密你的三個假設,但是對於你的最後一個問題 - 主幹沒有「攔截」 HTTP調用 - 它創建它們,就像任何其他JavaScript庫將向創建一個AJAX請求。

骨幹對你的服務器端語言/框架是相對不可知的。這裏是Backbone期待的任何時間「同步」被稱爲:

骨幹的同步功能使用不同的HTTP請求類型基於哪種方法被調用。這些不同的HTTP請求的類型有:

  • POST
  • GET
  • PUT
  • DELETE

你的框架需要支持上述所有的支持 「開箱即用」 Backbone的功能。這意味着您必須在您的應用程序中指定所有上述路線才能使用Backbone。

另一個需要注意的是「創建」和「更新」方法不會在請求中專門攜帶發佈數據 - 而是發送一個帶有json摘要數據的內容主體,並期望服務器端正確解析一個JSON對象並進行適當的處​​理。

+0

對於那些在RESTful(具象狀態傳輸)架構中掙扎的人,[閱讀此](http://www.infoq.com/articles/webber-rest-workflow)。 Backbone需要一個REST實現才能工作。 Andy關於POST和JSON的鏈接以及鏈接應該有助於構建需要發生的事情。正如@ Claudio-Hojda所證實的,我所有的三個假設都是正確的。但是隻有當你想讓其他人瞭解服務器的最新狀態時才需要websocket和輪詢服務器 - 這不是我的目標。 – Ricalsin 2012-07-30 14:53:25

1

我對所有三個假設都表示肯定,也同意@Andy Baird。

此外,您的項目唯一的問題是如何通知Backbone您已更新數據庫,並且您希望它在前端自行更新。我只能看到兩種解決方案:

1)使用Javascript的setInterval() - 如果您不需要在數據庫更新時立即更新前端,則可以每1分鐘檢查一次更改,Backbone知道只更新已更改的內容並添加新的東西,但當然這是不健康的服務器,如果你有1K活躍的人每分鐘做重複請求

2)使用SocketIO或類似的服務 - 這種方式,你可以從服務器發送到主幹或者整個修改您的數據庫列表或簡單的「請刷新,等待新的東西」。檢查this discussion

相關問題