我想让一个控制器动作处理多种类型的请求(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)。
人们通常如何处理这种情况。气馁了吗?
答案 0 :(得分:1)
我认为如果它是XML / JSON,那么它会比form-post / JSON更不奇怪。
在正常的Action中,您必须解析正文以获取Request的实例。 这使得你所描述的内容有点难,但是你可以将其创建一个EssentialAction来查看RequestHeader并从中选择一个body解析器并将解析后的body传递给回调函数。
如果您决定沿着这条路走下去,我建议您查看文档的动作组成部分(http://www.playframework.com/documentation/2.2.x/ScalaActionsComposition)以及相关课程的来源(您可以在游戏安装中使用它们)。