Play Framework.BodyParser,如果在JSON解析过程中出现异常,则返回400。BodyParser,如果在JSON解析过程中出现异常,返回400。

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

默认的json BodyParser 如果在JSON解析过程中抛出异常,返回500,例如,如果有一个 require(…) 而一些条件没有满足。我想让这个方案返回一个400。我怎样才能扩展默认的JSON BodyParser 来实现这个目标?

playframework
1个回答
0
投票

你可以定义一个自定义的 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) { 
  ... 
}
© www.soinside.com 2019 - 2024. All rights reserved.