怎么玩!提供XML响应的框架

时间:2013-12-02 06:03:17

标签: xml playframework playframework-2.0

不知怎的,我无法弄清楚如何玩!提供XML响应。我也不了解文档(你可以找到here)。

我的目标是创建一个站点地图,因此响应应为Content-Type: application/xml;

您如何更改以下控制器以提供Content-Type?

public static Result sitemap() {
    return ok("<message \"status\"=\"OK\">Hello Paul</message>");
}

1 个答案:

答案 0 :(得分:10)

播放会正确设置Content-type标题,如果您以正确的方式将其传递给ok()方法。举例来说,如果您要返回String(如您所示),它会认为是text/plain。你有至少2种方式,最快(但很难看)是强制内容类型,Jürgen建议将其设置为响应,但事实上Play有一个捷径:

public static Result sitemap() {
    return ok("<message status=\"OK\">Hello Paul</message>").as("text/xml");
}

另一方面,使用XML模板可能比使用粘合字符串构建它更好,更清晰...只需创建XML文件:

/app/views/sitemap.scala.xml

<message status="OK">John Doe</message>

所以你可以像使用它一样简单:

public static Result index() {
    return ok(views.xml.sitemap.render());
}

当然这个文件是Play的常用模板,因此您可以将数据传递给它并在内部处理(即迭代项目列表等)