Swift國內社區(qū): SwiftMic
Vapor 提供了一種機制來驗證數(shù)據(jù)的合法性。
基本用法
驗證 Employee 的 email 和 name 數(shù)據(jù)是否合法
class Employee {
var email: Valid<Email>
var name: Valid<Name>
init(request: Request) throws {
email = try request.data["email"].validated()
name = try request.data["name"].validated()
}
}
通過聲明 Valid<>
類型來保證數(shù)據(jù)的合法性,只有通過驗證的數(shù)據(jù)才能傳遞給 email
和 name
走哺。
只需使用 .validated()
進行數(shù)據(jù)驗證腹鹉, 而request.data
返回的數(shù)據(jù)類型均可調用 .validated()
胁后。
這里冰评, Email
是 Vapor 內置的 validator
阵漏,而 Name
不是趣兄。
- Vapor 內置的 validator
Valid<OnlyAlphanumeric>
Valid<Email>
Valid<Unique<T>>
Valid<Matches<T>>
Valid<In<T>>
Valid<Contains<T>>
Valid<Count<T>>
Name
實現(xiàn)
class Name: ValidationSuite {
static func validate(input value: String) throws {
let evaluation = OnlyAlphanumeric.self
&& Count.min(5)
&& Count.max(20)
try evaluation.validate(input: value)
}
}
只有純字母且字數(shù)介于 5~20 之間的名字才能通過驗證绽左。
使用示例
drop.post("validation") { request in
do {
let employee = try Employee(request: request)
print("employee name : \(employee.name.value)")
print("employee email : \(employee.email.value)")
} catch let error as ValidationError<Email> {
return "Email is invalid"
} catch let error as ValidationError<Name> {
return "Name is invalid"
}
return "validation success"
}
只有傳入的 name
和 email
數(shù)據(jù)均合法才能通過驗證,不然將會拋出異常艇潭。
除了通過 validated
拼窥,還有其他兩種方式驗證
let text = "test123"
let result1 = text.passes(Count.min(5))
let result2 = try text.tested(by: Count.min(5))
print("result1 = \(result1)")
print("result2 = \(result2)")
輸出
result1 = true
result2 = test123
passes
方法返回 Bool
類型, 而 tested
方法返回原始類型蹋凝。
Go to Vapor系列教程 - 目錄