在scala Play框架中是否有快速构建的方式来转发请求

use*_*913 5 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)
}
Run Code Online (Sandbox Code Playgroud)

我看到有一个redirect方法,但是只允许我传递请求参数,而不传递其他所有信息,标头等。

我希望内置一些东西,所以我不必自己构建。

Kri*_*ris -1

我不确定这是否满足您的要求,但是您是否研究过Play 的 WS

该操作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");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

(我使用的是Play 2.2.3)