2013-02-14 112 views
3

我在想如何检查Play Framework 2.1中的HTTP请求。我能找到的文档上的唯一信息是通过conf/routes机制:Play Framework检查HTTP请求

GET /clients/:id   controllers.Clients.show(id: Long) 

但这只会让我们摆脱路径参数id。如何访问请求的其他部分,例如标题或查询参数?换句话说,Play的JAX-RS @HeaderParam,@FormParam,@QueryParam等同于什么?

+0

您使用Java或斯卡拉你的控制器的代码是什么? – biesior 2013-02-14 16:26:20

回答

10

在一个动作,你可以使用request()方法获得请求头,例如,在Java:

public static Result index() { 
    // example of a Header 
    String userAgent = request().getHeader("User-Agent"); 

    // example of a query parameter 
    String q = request().getQueryString("q"); 
    ... 
} 

你可以看看API来JavaScala

+0

谢谢nico_ekito!如果你能指点我一些更广泛的指南,我也会非常高兴:[网站](http://www.playframework.com/documentation/2.1.0/ScalaHome)上的指南似乎只是搔痒表面。 – ticofab 2013-02-14 13:52:09

+0

我不知道任何特定的指南,而不是官方的文档。还有一些书在那里http://bit.ly/playscala和http://bit.ly/playjava – 2013-02-14 16:46:54

+1

请至少提供请求()来自哪里?为了新手的缘故。 – supertonsky 2014-04-23 04:14:05

4

这条线的工作对我来说:

implicit request => val User-Agent:String = request.headers.get("User-Agent").get 
1

更好地利用恒定的比硬编码字符串,在斯卡拉

import play.mvc.Http 

val userAgent: String = request.headers.get(Http.HeaderNames.USER_AGENT).get