我想知道,如果在doc:
中,如何从请求中获取正文trait RequestHeader extends AnyRef
The HTTP request header. Note that it doesn’t contain the request body yet.
这似乎来自2.0版本..
尝试获取异步处理请求的正文的示例。为了将其记录到文件中。
object AccessLoggingFilter extends EssentialFilter {
def apply(inputAction: EssentialAction) = new EssentialAction { request =>
val accessLogger = Logger("access")
def apply(requestHeader: RequestHeader): Iteratee[Array[Byte], Result] = { ...
Logger.info(s"""Request:
Body = ${requestHeader.???} """)
在SO上有一些哲学答案,例如here。但我不会称之为答案..
答案 0 :(得分:1)
是的,播放不允许在过滤阶段访问请求正文。
如果您只想记录正文,可以为其创建新动作并撰写。
这是游戏2.6
的一个例子def withLogging(action: Action[AnyContent]): Action[AnyContent] = {
Action.async(action.parser) { request =>
request.body match {
case AnyContentAsJson(json) => Logger.info("JSON body was: " + Json.stringify(json))
case _ => //implement more logging of different body types
}
action(request)
}
}
def foo = withLogging(Action.async(cc.parsers.anyContent) { implicit request =>
// do your stuff
}))
如果您只有json端点,则可以为此编写特定操作。