默认的json BodyParser
如果在JSON解析过程中抛出异常,返回500,例如,如果有一个 require(…)
而一些条件没有满足。我想让这个方案返回一个400。我怎样才能扩展默认的JSON BodyParser
来实现这个目标?
你可以定义一个自定义的 BodyParser
在解析请求体时处理(特定的?)异常。
val exceptionalJsonParser = BodyParser { h =>
try {
parse.tolerantJson(h) // <- call your normal parser here
} catch {
// catching all non-fatal exceptions here might not be a good idea,
// be more specific !
case NonFatal(e) => Accumulator.done(Left(BadRequest(e.getMessage)))
}
}
def action = Action.async(exceptionalJsonParser) {
...
}