繁体   English   中英

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

[英]Is play! Framework 2.0 suitable for creating a REST API?

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

现在我正在使用Play进行探索! 2.0.3用于我的下一个项目。 我看到虽然框架已得到增强,并且使开发Web应用程序变得更加容易,但关于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因为它仅在播放编译完成后生成。 这里有什么我想念的吗?

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

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

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

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

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

as()方法Status类的一部分。

或者,另一种选择是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM