在scala Play框架中是否有一种快速的内置方式来转发请求

在scala Play框架中是否有一种快速的内置方式来转发请求,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我在找像这样的东西 def proxy = Action.async { implicit req => //do something with req val newRequest = req.map( r = r.path = "http://newurl"); forward(newRequest) } 我看到有一个重定向方法,但它只允许我传递请求参数,而不允许传递所有其他内容、头等 我希望有内置的东西,这样我就不必自己构建了。我不确定这是否符合您的要求,但您是否已经研

我在找像这样的东西

def proxy = Action.async { implicit req =>
  //do something with req
  val newRequest = req.map( r = r.path = "http://newurl");
  forward(newRequest)
}
我看到有一个
重定向
方法,但它只允许我传递请求参数,而不允许传递所有其他内容、头等


我希望有内置的东西,这样我就不必自己构建了。

我不确定这是否符合您的要求,但您是否已经研究过了

操作
forwardTo
获取一个url,获取相应的页面,并将其作为此请求的响应返回。这并不完全像Spring框架中的前锋,但它为我做了这项工作

/**
 * Like an internal redirect or an proxy. The URL in the browser doesn't
 * change.
 */
public Promise<Result> forwardTo(String url) {
    Promise<WS.Response> response = WS.url(url).get();
    return response.map(new Function<WS.Response, Result>() {
        public Result apply(WS.Response response) {
            // Prevent browser from caching pages - this would be an
            // security issue
            response().setHeader("Cache-control", "no-cache, no-store");
            return ok(response.getBody()).as("text/html");
        }
    });
}
/**
*类似于内部重定向或代理。浏览器中的URL不可用
*改变。
*/
公共承诺转发到(字符串url){
承诺响应=WS.url(url.get();
返回response.map(新函数(){
应用公共结果(WS.Response响应){
//阻止浏览器缓存页面-这将是一个
//安全问题
response().setHeader(“缓存控制”,“无缓存,无存储”);
返回ok(response.getBody()).as(“text/html”);
}
});
}

(我正在使用Play 2.2.3)

啊,对不起,我更新了它。我想把它转发到一个新的url,但是请求中的其他所有内容都是相同的播放实例提供的另一个url,或者它是远程的?怎么样?浏览器将发送所有cookie和标题,您可以使用新参数指定反向路由的url。它将不适用于其他请求GET@AndrzejJozwik重定向是否转发所有Cookie和标头?我不确定它是否有,这就是为什么我要避免它。重定向不应该保留cookie和头。如果您想将请求处理转发到Play app的其他组件/功能,您应该查看动作合成。