使用Play Framework使用我自己的REST API

时间:2012-07-19 15:06:49

标签: api rest playframework playframework-1.x

所以我正在使用以下设置更新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控制器逻辑。

谢谢!

2 个答案:

答案 0 :(得分:3)

在我看来,重用控制器之间的方法不是最好的做法。共享行为应该在模型中编码,然后两个控制器都可以使用相同的模型方法。

如果你想这样做,你可以在apis控制器的公共方法中提取共享行为,你可以注释为“@Util”,然后从你的web控制器调用这个方法。

答案 1 :(得分:1)

你的问题中没有太多细节,所以我不知道它是否适用,但通常当我实现REST API时,我让他们以不同的格式(JSON和HTML,如果你想要JSONP和XML)提供答案实例)。

主要想法是

  1. 检查请求以了解所需格式:使用accept content type, the url extension, or even a parameter(以及some more about it
  2. 选择正确的模板(如果您已经正确构建了Json对象,则跳过模板)
  3. 在游戏中,第一部分有不同的方法,例如。通过您的路线:Request Content-Type in Play! Framework for REST webservices; Play documentation上有关于此的特定页面。

    但是这个答案中最重要的部分是第二点:你应该使用相同的控制器,HTML模板应该能够使用与json发回的相同数据呈现你的页面(或者更多一点)!

    NB。如果您需要更多地自定义事物,您可以访问控制器中的request对象,检查所请求的格式是什么,并采取相应的行动以使用适当的模板返回适当的数据!