统一播放框架中的错误消息

时间:2014-11-03 14:31:26

标签: scala playframework-2.0 playframework-2.3

当我使用json时,如果json无效,我会以格式发送错误:

error: { error: { obj.email: [{args: "", msg: "error.email"}] }  //1

但是使用json验证器,我有一个标准方法,可以验证数据(例如,如果数据库中存在电子邮件)。 如何统一所有以json形式发送错误的方法(1)?

例如带有操作的控制器:

 implicit val loginReads: Reads[Login] = (
   (__ \ "email").read[String](email) and
   (__ \ "password").read[String]
 )(Login.apply _)


 def login() = Action { request =>
   request.body.asJson match {
     case Some(login) => login.validate[Login] fold (
       err => BadRequest(Json.toJson(Map("error" -> JsError.toFlatJson(err)))),
       result => if (!isPresentInDb(result.email)) {
         //how to handle error and send it as json error form: "error" -> JsError.toFlatJson(err) 

       } else {
         //success
       }            
     )

    case None => //bad request
   } 
 }

 //login class
 case class Login(email: String, password: String)

1 个答案:

答案 0 :(得分:0)

三个选项:

  1. 创建与JsError.toFlatJson想要匹配的对象(JsError列表?)并用它们调用
  2. 创建您自己的实用程序方法,它将采用您自己的类型/类型的验证错误并生成预期的json结构
  3. 提供您自己的JsErrors序列化和您自己的错误消息,这些消息具有您想要的json结构