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

时间:2015-04-23 16:45:38

标签: 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)
}

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

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

1 个答案:

答案 0 :(得分:0)

我不确定这是否符合您的要求,但您是否已查看Play's WS

操作forwardTo获取一个网址,获取相应的网页并将其作为此请求的响应返回。它不像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");
        }
    });
}

(我正在使用Play 2.2.3)