所以我正在使用以下设置更新Play 1.2.x应用程序
- controllers
- api
- Documents // create, update, read, delete, list
... // more controllers
- web
- Documents // list, read, etc...
.. // more controllers
api 包中的控制器将数据呈现为 Json ,供移动客户端(Android,iPhone)使用。
现在我想要一个简单的html web应用程序来消费api。那么如何从Web包中的控制器中使用API呢?
我的目标是避免在Web控制器逻辑中重写api控制器逻辑。
谢谢!
答案 0 :(得分:3)
在我看来,重用控制器之间的方法不是最好的做法。共享行为应该在模型中编码,然后两个控制器都可以使用相同的模型方法。
如果你想这样做,你可以在apis控制器的公共方法中提取共享行为,你可以注释为“@Util”,然后从你的web控制器调用这个方法。
答案 1 :(得分:1)
你的问题中没有太多细节,所以我不知道它是否适用,但通常当我实现REST API时,我让他们以不同的格式(JSON和HTML,如果你想要JSONP和XML)提供答案实例)。
主要想法是
在游戏中,第一部分有不同的方法,例如。通过您的路线:Request Content-Type in Play! Framework for REST webservices; Play documentation上有关于此的特定页面。
但是这个答案中最重要的部分是第二点:你应该使用相同的控制器,HTML模板应该能够使用与json发回的相同数据呈现你的页面(或者更多一点)!
NB。如果您需要更多地自定义事物,您可以访问控制器中的request
对象,检查所请求的格式是什么,并采取相应的行动以使用适当的模板返回适当的数据!