簡體   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