对于播放文档(https://www.playframework.com/documentation/2.6.x/ScalaLogging)
中给出的以下代码段import Foundation
let jsonString = """
{
"direction" : "south"
}
"""
let jsonData = jsonString.data(using: .utf8)!
let decoder = JSONDecoder()
let myClassInstance = try! decoder.decode(MyClass.self, from: jsonData)
dump(myClassInstance)
/*
prints:
▿ __lldb_expr_319.MyClass #0
- direction: __lldb_expr_319.Direction.south
*/
以上代码使用class AccessLoggingAction @Inject() (parser: BodyParsers.Default)(implicit ec: ExecutionContext) extends ActionBuilderImpl(parser) {
val accessLogger = Logger("access")
override def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
accessLogger.info(s"method=${request.method} uri=${request.uri} remote-address=${request.remoteAddress}")
block(request)
}
}
,我将如何使用TolerantText BodyParser? BodyParsers.Default
似乎不存在?
我想使用TolerantText BodyParser,以便在提交POST请求的情况下记录错误,以便请求指定JSON的内容类型并发送无效的JSON正文,例如{“ - - “} (当给出无效的JSON时,默认BodyParser会立即抛出错误,这不会让我有机会记录该错误。我已经读过Play中的TolerantText BodyParser不会立即抛出错误,因为它忽略了内容头并且不会尝试根据内容标题解析正文。)
我希望能够使用TolerantText正文解析器或任何不会立即引发错误的内容,以便我可以记录该特定操作中发生的情况。
答案 0 :(得分:1)
要注释PlayBodyParsers
作为@rethab建议,请按如下方式定义您的类:
class AccessLoggingAction @Inject() (parser: PlayBodyParsers)(implicit ec: ExecutionContext)
extends ActionBuilderImpl(parser.tolerantText) {
...
}