play.api.mvc.BodyParsers (scala) 中的自定义结果错误

Custom result error in play.api.mvc.BodyParsers (scala)

我正在为我的 Scala 项目使用 play.api.mvc.BodyParsers。但问题是,如果解析失败,它总是会抛出默认错误结果,如 "Json validation error..."。我想要做的是在 json 验证失败的情况下发送我的自定义结果。

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

假设如果 myObject 解析失败,我希望我的结果是 Forbidden("invalid params in myObject")。有没有办法在解析 "succeed" 后不检查 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")
  }
}

希望对您有所帮助。