Ошибка пользовательского результата в play.api.mvc.BodyParsers (scala)

Я использую play.api.mvc.BodyParsers для своего проекта Scala. Но дело в том, что если синтаксический анализ завершается неудачно, он всегда выдает результат ошибки по умолчанию, такой как «Ошибка проверки Json ...». Я хочу отправить свой собственный результат в случае сбоя проверки json.

def myAction = (authAction)(parse.json(myObject.reads)) { request =>
   //some code here
   Ok
}

Предположим, что если синтаксический анализ myObject завершился неудачно, я хочу, чтобы мой результат был Запрещен («недопустимые параметры в myObject»). Есть ли способ сделать это без проверки request.body.myObject после синтаксического анализа «успешно»?


1
92
1

Ответ:

Решено

да. Вместо синтаксического анализа в аргументе парсера тела действия вы можете вместо этого выполнить синтаксический анализ внутри блока кода действия:

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")
  }
}

Надеюсь это поможет.