我还在学习Java的Play框架。我正在尝试创建一个测试服务器的测试用例。在那里,我使用RoutingDSL定义URL和响应。但是,我似乎无法找到任何方式来访问请求标头(实际上我正在尝试查看客户端是否正在发送正确的cookie)。 以下是代码片段:
server = Server.forRouter(20000, components ->
RoutingDsl.fromComponents(components)
.GET("/demo").routeTo(() ->
// Here I need something to get request headers or cookies
new Result(HttpStatus.SEE_OTHER_303)).build());
解决方案: 仔细阅读文档后(这里简要提到:https://www.playframework.com/documentation/2.6.x/JavaRoutingDsl):
由于您将实施操作,您可能想要导入 来自Controller的静态方法,包括工厂方法 创建结果,访问请求,响应和会话。
基本上,想法是使用来自play.mvc.Controller
类的静态方法,其中包含该信息:
server = Server.forRouter(20000, components ->
RoutingDsl.fromComponents(components)
.GET("/demo").routeTo(() ->
doSomethingWithRequest(play.mvc.Controller.request())
new Result(HttpStatus.SEE_OTHER_303)).build());