Vapor 2 验证有效类型抛出 "Use of undeclared type Valid"
Vapor 2 Validation Valid-Type throws "Use of undeclared type Valid"
我尝试使用 Vapor 2 有效类型,但编译器只说:"Use of undeclared type Valid"。
我读过:https://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/
在我的 Package.swift 我定义了
- /vapor/vapor.git
- /vapor/validation-provider.git
- /流利-provider.git
作为依赖项。
如果我尝试使用 Valid<SomeValidator>
,编译器会说:"Use of undeclared type Valid".
使用 import Validation
与 import VaporValidation
没有区别。
有没有人知道如何让 Valid 工作?
感谢您的帮助。
编辑:
我创建了一个新的 Vapor 项目 vapor new validtest --api
.
编辑了 Package.swift:
import PackageDescription
let package = Package(
name: "validtest",
targets: [
Target(name: "App"),
Target(name: "Run", dependencies: ["App"]),
],
dependencies: [
.Package(url: "https://github.com/vapor/vapor.git", majorVersion: 2),
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1),
.Package(url: "https://github.com/vapor/validation-provider.git", majorVersion: 1),
.Package(url: "https://github.com/vapor/fluent-provider.git", majorVersion: 1)
],
exclude: [
"Config",
"Database",
"Localization",
"Public",
"Resources",
]
)
运行 vapor fetch
和 vapor xcode
.
在示例代码的 Routes.swift 中,我试过这个:
import Vapor
import FluentProvider
import Validation
// or and both imports are tested
import VaporValidation
extension Droplet {
func setupRoutes() throws {
get("info") { req in
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
无论我使用哪个导入,编译器总是说:"Use of undeclared type Valid".
我遇到了同样的问题。这应该有效:
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1)
...
import Validation
...
try EmailValidator().validate(email)
而不是
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
Vapor 2 的验证使用
guard let input = req.data["input"]?.string else { throw SomeError }
try input.validated(by: OnlyAlphanumeric())
如果输入字符串无效,将抛出一个ValidationError
。
我尝试使用 Vapor 2 有效类型,但编译器只说:"Use of undeclared type Valid"。
我读过:https://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/
在我的 Package.swift 我定义了
- /vapor/vapor.git
- /vapor/validation-provider.git
- /流利-provider.git
作为依赖项。
如果我尝试使用 Valid<SomeValidator>
,编译器会说:"Use of undeclared type Valid".
使用 import Validation
与 import VaporValidation
没有区别。
有没有人知道如何让 Valid 工作?
感谢您的帮助。
编辑:
我创建了一个新的 Vapor 项目 vapor new validtest --api
.
编辑了 Package.swift:
import PackageDescription
let package = Package(
name: "validtest",
targets: [
Target(name: "App"),
Target(name: "Run", dependencies: ["App"]),
],
dependencies: [
.Package(url: "https://github.com/vapor/vapor.git", majorVersion: 2),
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1),
.Package(url: "https://github.com/vapor/validation-provider.git", majorVersion: 1),
.Package(url: "https://github.com/vapor/fluent-provider.git", majorVersion: 1)
],
exclude: [
"Config",
"Database",
"Localization",
"Public",
"Resources",
]
)
运行 vapor fetch
和 vapor xcode
.
在示例代码的 Routes.swift 中,我试过这个:
import Vapor
import FluentProvider
import Validation
// or and both imports are tested
import VaporValidation
extension Droplet {
func setupRoutes() throws {
get("info") { req in
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
无论我使用哪个导入,编译器总是说:"Use of undeclared type Valid".
我遇到了同样的问题。这应该有效:
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1)
...
import Validation
...
try EmailValidator().validate(email)
而不是
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
Vapor 2 的验证使用
guard let input = req.data["input"]?.string else { throw SomeError }
try input.validated(by: OnlyAlphanumeric())
如果输入字符串无效,将抛出一个ValidationError
。