validation - Validación de Vapor 2 Tipo válido lanza "Uso del tipo no declarado Válido"
swift3 (2)
Yo tuve el mismo problema. Esto debería funcionar:
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1)
...
import Validation
...
try EmailValidator().validate(email)
Intento utilizar el tipo válido de Vapor 2, pero el compilador solo dice: "Uso del tipo no declarado Válido".
Había leído: https://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/
En mi mi Package.swift he definido
- /vapor/vapor.git
- /vapor/validation-provider.git
- /fluent-provider.git
como dependencias.
Si intento usar Valid<SomeValidator>
el compilador dice: "Uso del tipo no declarado Válido".
El uso de import VaporValidation
import Validation
vs import VaporValidation
no hace diferencia.
¿Alguien tiene una idea de cómo puedo hacer que Válido funcione?
THX por tu ayuda
Editar: vapor new validtest --api
un nuevo proyecto Vapor vapor new validtest --api
.
Editado el paquete.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",
]
)
Ran vapor fetch
y vapor xcode
.
En Routes.swift del código de ejemplo, probé esto:
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()
No importa qué importación utilicé, el compilador siempre dice: "Uso del tipo no declarado Válido".
En lugar de
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
La validación de Vapor 2 usa
guard let input = req.data["input"]?.string else { throw SomeError }
try input.validated(by: OnlyAlphanumeric())
Si la cadena de entrada no es válida, se lanzará un ValidationError
.