0

好的,所以這裏的一個更好的標題可能是「在CakePHP中使用REST進行漸進式增強」,但至少現在我知道如果您的答案僅僅是指兩者之間的區別;)在CakePHP中使用REST進行優雅的降級

我對REST非常熟悉,以及如何將它與CakePHP集成,但我並不是100%在船上如何仍然保持傳統運作的網站。使用Router :: mapResources聽起來像是一個好主意,但這會導致維護網站的「正常降級」版本時出現問題,因爲POST請求/ resource/add的GET/GET/GET請求將路由到相同的動作(加)。很顯然,如果他們使用REST api,我會希望此操作返回JSON對象,但如果他們使用網站的降級版本(也許不是JS),它應該是一個添加表單,對嗎?

解決這個問題的最佳方法是什麼?您是否使用Router :: resourceMap()將您的REST請求路由到其他操作名稱?你有沒有做過這種瘋狂的黑客攻擊,我看到有resourceMap的/ api/prefix部分,所以你可以使用api_action函數?您是否通過檢查isAjax()來處理REST和傳統請求?如果是這樣,您如何確保您可以依靠瀏覽器正確支持其他兩種請求類型?

我已經搜索了很多,但沒有發現任何關於如何保持傳統的請求在蛋糕旁邊REST,所以如果任何人有任何建議或經驗,我很樂意聽到它!

回答

0

CakePHP也使用擴展路由,通過Router :: parseExtension()so;

  • /測試/動作會使意見/測試/ action.ctp
  • /test/action.html也
  • /test/action.json會使意見/測試/ JSON/action.ctp
  • /test/action.xml會使意見/測試/ XML/action.ctp

如果所有的觀點被設計成處理相同的數據,由控制器設置,您就可以顯示常規HTML表單並按照處理AJAX請求的相同方式處理髮布的數據。

你可能會不得不增加檢查是否有任何數據發佈/中/加,/編輯內提交/刪除操作,以防止物品被刪除,而不發佈形式(沒有測試過,雖然如果mapresources設置爲控制它可能是塊蛋糕這些URL)

REST CakePHP中: http://book.cakephp.org/2.0/en/development/rest.html

(分機)路由 http://book.cakephp.org/2.0/en/development/routing.html#file-extensions

+0

感謝您的信息,我underst這部分,我想我的問題是你在控制器中做了什麼,因爲它看起來像REST API的行爲會做一些不同於傳統請求的行動,但你可能是對的,他們可能會使用相同的數據和觀點是什麼在做一些不同的事情。謝謝! – BeniRose

相關問題