如何在Play 2中的单个控制器操作中处理多种内容类型

时间:2013-11-21 02:45:45

标签: playframework-2.0

我想让一个控制器动作处理多种类型的请求(json和url编码值)。我已经在某种程度上通过内容类型的模式匹配来实现这一点:

request.contentType match {
      case Some("application/json") => { // Do some stuff with JSON ... }
      case _ => { // Treat it like a regular html form ... }

这有效,但似乎不是一个好方法。我还没有能够使结果类型变得不同(当我收到表单提交时,当我收到json和html时返回json)。

人们通常如何处理这种情况。气馁了吗?

1 个答案:

答案 0 :(得分:1)

我认为如果它是XML / JSON,那么它会比form-post / JSON更不奇怪。

在正常的Action中,您必须解析正文以获取Request的实例。 这使得你所描述的内容有点难,但是你可以将其创建一个EssentialAction来查看RequestHeader并从中选择一个body解析器并将解析后的body传递给回调函数。

如果您决定沿着这条路走下去,我建议您查看文档的动作组成部分(http://www.playframework.com/documentation/2.2.x/ScalaActionsComposition)以及相关课程的来源(您可以在游戏安装中使用它们)。