【问题标题】:Unify error messages in play framework统一播放框架中的错误消息
【发布时间】:2014-12-30 05:29:14
【问题描述】:

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

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

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

例如带有动作的控制器:

 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)

【问题讨论】:

    标签: scala playframework-2.0 playframework-2.3


    【解决方案1】:

    三个选项:

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

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 2014-10-22
      相关资源
      最近更新 更多