在Play Framework for Java中,当控制器返回Promise <result>时,如何修改头文件?

时间:2016-02-24 16:25:48

标签: java playframework playframework-2.0 akka-http

我的目标是实现依赖于可能冗长的操作的HTTP请求的控制器方法。我了解到控制器应该是非阻塞的,我可以return a Promise而不是结果:

public F.Promise<Result> demo() {
    final F.Promise<WSResponse> upstreamResponse = WS.url(SOME_ENDPOINT).get();
    F.Promise<Result> ourResult = upstreamResponse.map(new F.Function<WSResponse, Result>() {
        @Override
        public Result apply(WSResponse wsResponse) {
            final String body = someMethod(wsResponse);
            final Map<String, String> headers = otherMethod(wsResponse);
            // What do I do with headers?
            return ok(body);
        }
    });
    return ourResult;
}

使用此方法,我们可以指定正文,可选择内容类型和状态代码。但是,我们无法添加其他客户标头。

在返回纯结果的控制器方法中,我们可以使用

        response().setHeader(name, value);

如何在上面的异步代码中实现相同的效果?

注意:我是Play Framework的新手,并且会接受任何其他解决方案来设置响应标头。

0 个答案:

没有答案