是玩! Framework 2.0适合创建REST API吗?

时间:2012-09-07 12:22:50

标签: java rest playframework playframework-2.0

我使用Play开发了一个REST API!框架1.2.4,我对框架非常不满意。简单和快速的开发周期帮助我实现了这一目标,只需花费我传统Java EE路线所用的时间。

现在我正在使用Play进行探索! 2.0.3用于我的下一个项目。我看到虽然框架已得到增强,并且更容易开发 web-apps ,但对于 REST API 也是如此。我的应用程序将不会包含任何HTML - 我将仅使用XML或JSON或我将来决定使用的任何数据交换格式进行响应。

所以,问题是:

  

有没有人在这里使用Play 2.0.x来展示非HTML纯REST API?

更多详情:

与1.2.x相比,以下是我认为在Play 2.0.x中开发纯REST API更加困难的一些因素。如果我错了,请纠正我的理解。

内容谈判更难

在游戏中! 1.2.4,我内容协商是建立在框架之上的。可以选择在路径文件中定义请求所期望的内容类型。

GET /friends User.listFriends(format:'xml')

然后,在控制器中,

public static void getFriends(){
    render();
}

这将导致views/xml/User/listFriends.xml模板自动呈现。要明天添加对JSON的支持,我需要做的就是添加views/json/User/listFriends.json模板。

我不知道在游戏中如何做到这一点! 2.0.x的

创建非html模板不太直观

经过一些反复试验,我发现可以在play文件夹中创建一个listFriends.scala.xml! 2.0。然后,需要在控制器代码中调用它,如下所示:

return ok(views.xml.listFriends.render());

但是,Eclipse并不喜欢这样,因为Eclipse不知道views.xml.listFriends,因为它仅在播放编译完成后生成。这里有什么我想念的吗?

2 个答案:

答案 0 :(得分:5)

在Play(Scala)中,您可以执行以下操作:

val myXMl = obtainXML();
return Ok(myXML).as("text/xml")

我不确定Java中的语法,但它是等价的:不是创建模板,而是生成XML然后将其发送给用户,将返回类型设置为“text / xml”(或者json或者你需要的任何东西)。

答案 1 :(得分:5)

正如Pere Villega解释的那样,但是使用Java语法:

String xml = getXMLAsString();
return ok(xml).as("text/xml");

as() methodStatus class的一部分。

或者,另一种选择是:

String xml = getXMLAsString();
response().setContentType("text/xml")
return ok(xml);