在play framework Java中找不到传入请求的请求体。我需要在play framework API中记录所有传入请求。为此,我尝试使用滤镜和动作组合。但我能得到请求体。
我尝试使用滤镜和动作组合。
public class LoggingFilter extends EssentialFilter {
private final Executor executor;
@Inject
public LoggingFilter(Executor executor) {
super();
this.executor = executor;
}
@Override
public EssentialAction apply(EssentialAction next) {
return EssentialAction.of(request -> {
long startTime = System.currentTimeMillis();
Accumulator<ByteString, Result> accumulator = next.apply(request);
System.out.println(request);
return accumulator.map(result -> {
long endTime = System.currentTimeMillis();
long requestTime = endTime - startTime;
Logger.info("{} {} took {}ms and returned {}",
request.method(), request.uri(), requestTime, result.status());
return result.withHeader("Request-Time", "" + requestTime);
}, executor);
});
}
}
从这个请求中,我可以得到body是否存在的布尔值。但却无法得到真正的尸体。
您可以在action Composition中获取请求正文并记录它:
import play.Logger;
import play.mvc.Http;
import play.mvc.Result;
import java.util.concurrent.CompletionStage;
public class ClientLogger extends play.mvc.Action.Simple {
public CompletionStage<Result> call(Http.Context context) {
StringBuffer logMessage = new StringBuffer();
logMessage.append(context.request().toString())
.append("\n")
.append("body json: " + context.request().body().asJson().toString());
Logger.info(logMessage.toString());
return delegate.call(context);
}
}
如果有人能抛出关于如何修改以下播放框架日志过滤器(ref.play filters)以实现以下目标的指针,我将不胜感激: null
在我的Play(Java)框架项目中,我正在使用Guice进行依赖项注入,并且正在努力理解如何最好地将“会话”的概念与Guice和Play结合使用? 我知道Play是无状态的,除了可以在cookie中存储值之外,实际上没有会话的概念。我对Guice和Play的理解是,虽然Guice文档描述了支持不同的作用域(单例、会话、请求、无作用域),但因为我们正在用每个请求实例化一个新的注入器,所以仅适用于P
我想通过Spring过滤器或方面记录超文本传输协议请求中的请求参数。我尝试了不同的方法,但请求参数为空或未调用方法。我使用的是POSTMAN,它是一个POST请求。 http://localhost:8080/available data 请求正文示例: {“keyUserAgent”:“CFNetwork/1209 Darwin/20.2.0”,“locale”:“en_US”,“eid”:“8
我正在使用Django3.1.7和指南:指南我正在尝试做下拉式dinamic查询,我不知道是否有一个更好的形式来做这件事...没有必要使用Django Rest框架,我可以自由使用我想要的所有东西。
我试图在spring boot应用程序中配置的过滤器中获取请求中的Traceid以进行审计。 我们如何从过滤器中的请求中获取Traceid
为了解决这一限制, 从发布AEM实例启动的工作流:当从AEM发布实例提交自适应表单、交互式通信或信件时,所有工作流实例都使用服务用户创建。在这些情况下,工作流实例数据中不会捕获登录用户的用户名。 我添加了一个过滤器servlet来拦截AEM Forms servlet之前的初始表单提交,使用请求包装器修改请求正文,添加原始用户ID。 我审查了以下资源: 如何在java过滤器中更改servlet请求