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")
}
}
希望对您有所帮助。
我正在为我的 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")
}
}
希望对您有所帮助。