scala – 我的Play 2应用程序如何响应客户端的不同“Accept”标
发布时间:2020-12-16 21:31:54 所属栏目:安全 来源:网络整理
导读:在Rails中,我能够做类似于以下的事情: respond_to do |format| format.xml { ... } format.json { ... }end 并且基于客户端在Accept标头中提供的内容将执行适当的块. 如何在Play 2.0(Scala)中做同样的事情? 我会寻找一些看起来像这样的东西: try { Resour
在Rails中,我能够做类似于以下的事情:
respond_to do |format| format.xml { ... } format.json { ... } end 并且基于客户端在Accept标头中提供的内容将执行适当的块. 如何在Play 2.0(Scala)中做同样的事情? 我会寻找一些看起来像这样的东西: try { Resources.delete(id) Ok("done") } catch { case e: ClientReportableException => ?? match { case "application/xml" => Ok(<error>{e.message}</error>) case "application/json" => Ok(...) } } 有没有一个Play成语,或者我只是从请求中获取Accept标头的值? 解决方法
在Play 2.1中,您可以写下列内容:
request match { case Accepts.Xml() => Ok(<error>{e.message}</error>) case Accepts.Json() => Ok(…) } case语句按照它们写入的顺序进行尝试,因此如果您的客户端将HTTP Accept标头设置为* / *,则第一个将匹配(在本例中为Accepts.Xml()).因此,您通常首先要写入Accepts.Html()的情况,因为浏览器将Accept标头设置为* / *. (注:您也可能对Java中的类似问题的this answer感兴趣) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |