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:
Ale Mohamad ⌘ 2025-01-15 23:29:57 +01:00 committed by GitHub
parent b99757f69b
commit a0ec345aab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 51 additions and 49 deletions

View File

@ -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.

View File

@ -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
}
)
}
}
```

View File

@ -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] = [