Play Framework: BodyParser, который возвращает 400, если исключение выдается во время анализа JSON - PullRequest
0 голосов
/ 01 мая 2020

Значение по умолчанию json BodyParser возвращает 500, если во время синтаксического анализа JSON возникла исключительная ситуация - например, если require(…) и какое-то условие не было выполнено. Я хотел бы, чтобы этот сценарий возвращал 400. Как я могу расширить значение по умолчанию JSON BodyParser для достижения этой цели?

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете определить пользовательский BodyParser, который обрабатывает (специфицирует c?) Исключения при разборе тела запроса:

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) { 
  ... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...