mirror of https://github.com/vapor/docs.git
Update of custom validator documentation in Spanish (#1052)
Update of custom validator documentation in Spanish from the issue #1041. --------- Co-authored-by: TheHandyOwl <24987271+TheHandyOwl@users.noreply.github.com>
This commit is contained in:
parent
b99757f69b
commit
a0ec345aab
|
|
@ -136,51 +136,6 @@ struct MyError: DebuggableError {
|
|||
|
||||
`DebuggableError` tiene otras propiedades como `possibleCauses` y `suggestedFixes` que puedes usar para mejorar la depuración de tus errores. Echa un vistazo al protocolo para más información.
|
||||
|
||||
## Stack Traces (Trazas de Pila)
|
||||
|
||||
Vapor incluye soporte para visualizar stack traces para errores normales y crashes de Swift.
|
||||
|
||||
### Swift Backtrace
|
||||
|
||||
Vapor usa la librería de [SwiftBacktrace](https://github.com/swift-server/swift-backtrace) para proporcionar stack traces después de un error crítico (fatal error) o comprobaciones (assertion) en Linux. Para que esto funcione, tu app debe incluir símbolos de depuración (debug symbols) durante la compilación.
|
||||
|
||||
```sh
|
||||
swift build -c release -Xswiftc -g
|
||||
```
|
||||
|
||||
### Trazas de Error
|
||||
|
||||
Por defecto, `Abort` capturará el stack trace actual al inicializarse. Tus tipos de errores personalizados pueden conseguir esto conformándose con `DebuggableError` y guardando `StackTrace.capture()`.
|
||||
|
||||
```swift
|
||||
import Vapor
|
||||
|
||||
struct MyError: DebuggableError {
|
||||
var identifier: String
|
||||
var reason: String
|
||||
var stackTrace: StackTrace?
|
||||
|
||||
init(
|
||||
identifier: String,
|
||||
reason: String,
|
||||
stackTrace: StackTrace? = .capture()
|
||||
) {
|
||||
self.identifier = identifier
|
||||
self.reason = reason
|
||||
self.stackTrace = stackTrace
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Cuando el [nivel de registro](logging.es.md#nivel) de tu app se establece a `.debug` o inferior, stack traces de errores se incluirán en los registros.
|
||||
|
||||
Los stack traces no serán capturados cuando el nivel de registro sea mayor que `.debug`. Para sobrescribir este comportamiento, establece `StackTrace.isCaptureEnabled` manualmente en `configure`.
|
||||
|
||||
```swift
|
||||
// Siempre captura stack traces, sin importar el nivel de registro.
|
||||
StackTrace.isCaptureEnabled = true
|
||||
```
|
||||
|
||||
## Middleware de Error
|
||||
|
||||
`ErrorMiddleware` es el único middleware añadido a tu aplicación por defecto. Este middleware transforma errores de Swift que hayan sido lanzados o devueltos por tus controladores de rutas en respuestas HTTP. Sin este middleware, los errores lanzados darían lugar al cierre de la conexión sin una respuesta.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Validación
|
||||
|
||||
La API Validation de Vapor te ayuda a validar peticiones entrantes antes de usar la API [Content](content.md) para decodificar datos.
|
||||
La API Validation de Vapor te ayuda a validar el cuerpo y los parámetros de consulta de una solicitud entrante antes de usar la API [Content](content.md) para decodificar datos.
|
||||
|
||||
## Introducción
|
||||
|
||||
|
|
@ -220,7 +220,7 @@ Debajo tienes una lista de los validadores soportados actualmente y una breve ex
|
|||
|`.range(_:)`|El valor se encuentra en el `Range` (rango) proporcionado.|
|
||||
|`.url`|Contiene una URL válida.|
|
||||
|
||||
Los validadores también pueden combinarse mediante operadores para construir validaciones complejas.
|
||||
Los validadores también pueden combinarse mediante operadores para construir validaciones complejas. Más información sobre el validador `.custom` en [[#Validadores Personalizados]].
|
||||
|
||||
|Operador|Posición|Descripción|
|
||||
|-|-|-|
|
||||
|
|
@ -230,7 +230,11 @@ Los validadores también pueden combinarse mediante operadores para construir va
|
|||
|
||||
## Validadores Personalizados
|
||||
|
||||
Crear un validador personalizado para códigos postales te permite extender la funcionalidad del marco de validación. En esta sección, te guiaremos a través de los pasos para crear un validador personalizado que valide códigos postales.
|
||||
Hay dos formas de crear validadores personalizados.
|
||||
|
||||
### Extendiendo la API Validation
|
||||
|
||||
Extendiendo la API Validation es la mejor opción para los casos en los que planees utilizar el validador personalizado en más de un objeto `Content`. En esta sección, te guiaremos por los pasos para crear un validador personalizado para validar códigos postales.
|
||||
|
||||
Primero, crea un nuevo tipo para representar los resultados de la validación de `ZipCode`. Esta estructura será responsable de informar si una cadena dada es un código postal válido.
|
||||
|
||||
|
|
@ -287,3 +291,45 @@ Ahora que has definido el validador personalizado `zipCode`, puedes usarlo para
|
|||
```swift
|
||||
validations.add("zipCode", as: String.self, is: .zipCode)
|
||||
```
|
||||
|
||||
### Validador `Custom`
|
||||
|
||||
El validador `Custom` es el más adecuado para los casos en los que deseas validar una propiedad en un solo objeto `Content`. Esta implementación tiene las siguientes dos ventajas en comparación con la extensión de la API Validation:
|
||||
|
||||
- Lógica de validación personalizada más sencilla de implementar.
|
||||
- Sintaxis más corta.
|
||||
|
||||
En esta sección, te guiaremos a través de los pasos para crear un validador personalizado para verificar si un empleado es parte de nuestra empresa mirando la propiedad `nameAndSurname`.
|
||||
|
||||
```swift
|
||||
let allCompanyEmployees: [String] = [
|
||||
"Everett Erickson",
|
||||
"Sabrina Manning",
|
||||
"Seth Gates",
|
||||
"Melina Hobbs",
|
||||
"Brendan Wade",
|
||||
"Evie Richardson",
|
||||
]
|
||||
|
||||
struct Employee: Content {
|
||||
var nameAndSurname: String
|
||||
var email: String
|
||||
var age: Int
|
||||
var role: String
|
||||
|
||||
static func validations(_ validations: inout Validations) {
|
||||
validations.add(
|
||||
"nameAndSurname",
|
||||
as: String.self,
|
||||
is: .custom("Validates whether employee is part of XYZ company by looking at name and surname.") { nameAndSurname in
|
||||
for employee in allCompanyEmployees {
|
||||
if employee == nameAndSurname {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
|||
|
|
@ -294,6 +294,7 @@ Now that you've defined the custom `zipCode` validator, you can use it to valida
|
|||
```swift
|
||||
validations.add("zipCode", as: String.self, is: .zipCode)
|
||||
```
|
||||
|
||||
### `Custom` Validator
|
||||
|
||||
The `Custom` validator is best suited for cases where you want to validate a property in only one `Content` object. This implementation has the following two advantages compared to extending the Validation API:
|
||||
|
|
@ -301,7 +302,7 @@ The `Custom` validator is best suited for cases where you want to validate a pro
|
|||
- Simpler to implement custom validation logic.
|
||||
- Shorter syntax.
|
||||
|
||||
In this section, we'll walk you through the steps to create a custom validator for checking whether an employee is part of our company by looking at the `nameAndSurname` property.
|
||||
In this section, we'll walk you through the steps to create a custom validator for checking whether an employee is part of our company by looking at the `nameAndSurname` property.
|
||||
|
||||
```swift
|
||||
let allCompanyEmployees: [String] = [
|
||||
|
|
|
|||
Loading…
Reference in New Issue