Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在play框架中统一错误消息_Scala_Playframework 2.0_Playframework 2.3 - Fatal编程技术网

Scala 在play框架中统一错误消息

Scala 在play框架中统一错误消息,scala,playframework-2.0,playframework-2.3,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[St

使用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)
三种选择:

  • 创建与JsError.toFlatJson所需内容相匹配的对象(JsError列表?),并用它们调用它
  • 创建您自己的实用程序方法,该方法将接受您自己的验证错误类型,并生成预期的json结构
  • 提供您自己的JsErrors序列化和具有您想要的json结构的错误消息