自定义可验证模型的验证错误信息。

问题描述 投票:1回答:1

是否有可能为内置的 "验证错误信息 "提供自定义验证错误信息?Validatable 协议?我有这个验证。

static func validations() throws -> Validations<NewsletterListItem> {
    var validations = Validations(NewsletterListItem.self)
    validations.add(\.email, at: ["email"], .email)
    return validations
}

产生了这个信息

{
  "error": true,
  "reason": "duplicate key value violates unique constraint \"uq:newsletter_list.email\""
}

...我想改进一下。

swift validation vapor
1个回答
1
投票

原来 Validatable 只添加了约束条件,但本身并不验证它们。所以不提供 Validatable 的错误信息,你需要捕捉到错误,检查是什么错误,然后返回抛出所需的响应信息。这样做的一个好地方是 .save() 模型上的调用。

下面的例子是在一个路由处理程序的 POST /subscribe-to-newsletter:

return try item.save(on: req).catchMap { error in
    if error.localizedDescription.contains("uq:newsletter_list.email") {
        throw Abort(.ok, reason: "You're already subscribed to newsletter")
    }
    throw Abort(.badRequest, reason: "error: \(error.localizedDescription)")
}
© www.soinside.com 2019 - 2024. All rights reserved.