Я использую play.api.mvc.BodyParsers для своего проекта Scala. Но дело в том, что если синтаксический анализ завершается неудачно, он всегда выдает результат ошибки по умолчанию, такой как «Ошибка проверки Json ...». Я хочу отправить свой собственный результат в случае сбоя проверки json.
def myAction = (authAction)(parse.json(myObject.reads)) { request =>
//some code here
Ok
}
Предположим, что если синтаксический анализ myObject завершился неудачно, я хочу, чтобы мой результат был Запрещен («недопустимые параметры в myObject»). Есть ли способ сделать это без проверки request.body.myObject после синтаксического анализа «успешно»?
да. Вместо синтаксического анализа в аргументе парсера тела действия вы можете вместо этого выполнить синтаксический анализ внутри блока кода действия:
def myAction = (authAction)(parse.json) { request =>
request.body.validate[MyObject](MyObject.reads) match {
case JsSuccess(myObject, _) =>
//some code here
Ok
case JsError(_) => Forbidden("invalid params in myObject")
}
}
Надеюсь это поможет.