【发布时间】:2015-09-02 23:42:13
【问题描述】:
我正在使用 Spray 编写一个 Web 应用程序,并且正在使用本文底部描述的案例类验证方法:
http://spray.io/documentation/1.2.3/spray-routing/advanced-topics/case-class-extraction/
效果很好,但我对返回给客户端的消息不满意。除了丑之外,它还暴露了一些关于后端的细节:
请求内容格式错误: [simple type, class com.mycompany.models.users.User$Login] 值的实例化失败:要求 失败:无效的电子邮件地址(通过引用链: com.mycompany.models.users.Login["password"])
我想说,简单
电子邮件地址无效
你知道如何做到这一点吗?
更新
我已经实现了@soong 的建议,但效果很好(到目前为止)。
我的要求代码是require(!zipcode.isEmpty, "Invalid zipcode")
我的拒绝处理程序代码:
implicit def validationRejectionHandler = RejectionHandler {
case MalformedRequestContentRejection(msg, cause) :: _ =>
complete(BadRequest, s"$msg")
}
问题是我想要的消息(“无效的邮政编码”)包含在其他一些文本中:
cause.detailMessage = "requirement failed: Invalid zipcode"
有什么方法可以在不进行字符串操作的情况下获得我的确切错误消息?
【问题讨论】:
-
您熟悉制作自定义异常处理程序吗? spray.io/documentation/1.2.2/spray-routing/key-concepts/…
-
不。这是极好的。谢谢!
-
那我就给个答案吧。
-
所以我刚刚了解到这些类型的异常是拒绝并转到 RejectionHandler:spray.io/documentation/1.2.2/spray-routing/key-concepts/…
-
当您说“字符串操作”时,您的意思是您不想将错误字符串与“无效的邮政编码”进行比较?