2012-04-14 26 views
0

我使用restlet開發了一個非常廣泛的rest API,但現在我需要提供網頁。我正在研究這個播放框架,它似乎是我的問題的一個很好的解決方案。有很多代碼需要共享,所以我希望兩者都運行在相同的服務器/ jvm上(最終在Heroku上部署)。一起使用play和restlet

是否可以配置應用服務器(如jetty)來分割調用基於URL路徑要不要去的Restlet或玩嗎?如果是的話怎麼辦?難道我開始一個遊戲項目或的Restlet項目,我怎麼修改呢?

感謝!

回答

1

有幾個選擇這裏

  1. 你可以使用一個前置的Apache laye r,以便您可以將Playlet部分的Restlet部分完全分開。雖然您正在部署到Heroku,但我不確定您是否能夠這樣做,因爲Heroku不會爲您提供前端http層

  2. 修改HTTP處理程序。這將涉及創建您自己的模塊或修改Play的核心來源。這當然會解決你的用例,但我不認爲修改核心是一個很好的答案,模塊方法是相當矯枉過正的。

  3. 使用Play 1.x,您可以爲所有Restlet API執行單個控制器操作,只需調用Restlet服務即可。在Play 2.x中,您可以使用Global對象的onRouteRequest方法。

如果你正在考慮部署到PaaS的像Heroku的,我想我會選擇去3.

+0

謝謝您的回答!兩個問題:1.是否還有一個選項可以在應用程序服務器級別執行某些操作? (jetty/netty/tomcat/whatever)2.我看了一下選項3,我喜歡這個主意,但我沒有看到將請求和響應對象從播放轉換爲restlet可用的方式。 – 2012-04-15 14:41:31

+0

1)這幾乎是選項2。 Netty公開了一個http處理程序。 2)我還沒有玩過Restlet,但據我瞭解,它是應用服務器不可知論者 – Codemwnci 2012-04-15 17:49:33

+0

啊。好吧,我誤解了選項2.是的,restlet是應用服務器agnostinc,但我仍然不清楚你如何從play.mvc.context和play.mvc.Http.Request(可用於onRequest和action.call)並用它來調用restlet,但我會將其標記爲正確,並開始一個新問題。再次感謝您的出色答案! – 2012-04-15 21:18:58