Java Play:在 EssentialFilter 中使用 EssentialAction 来访问请求正文?

问题描述 投票:0回答:1

我目前正在尝试找到一种方法,使用过滤器来捕获所有入站请求,然后将正文发送到其他地方,根据此处的官方文档:https://www.playframework.com/documentation/2.8.x/ JavaHttpFilters 这应该是可能的,因为最后一节指出: “Play 提供了一个名为 EssentialFilter 的较低级别过滤器 API,它使您可以完全访问请求正文。此 API 允许您将 EssentialAction 与另一个操作包装在一起。”

但是,当我创建包含在 EssentialFilter 中的 EssentialAction 时,我只能访问请求的标头,而列出的示例并没有真正涵盖如何访问正文。

根据这个接受的答案,这是有道理的:How to log the body from every request in Play?,但与官方文档所述相冲突。

我有什么遗漏的吗?

public class SendBodyFilter extends EssentialFilter {
    private final Materializer mat;
    
    @Inject
    SendBodyFilter(
            Materializer mat
    ) {
        super();
        this.mat = mat;
    }
    @Override
    public EssentialAction apply(EssentialAction next) {
        return EssentialAction.of(request -> {
            System.out.println(request);
            return next.apply(request);
        });
    }
}

java playframework
1个回答
0
投票

你错过了那个甜蜜而迅速的工程技能伙伴

© www.soinside.com 2019 - 2024. All rights reserved.