You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`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.
138
138
139
-
## Stack Traces (Trazas de Pila)
140
-
141
-
Vapor incluye soporte para visualizar stack traces para errores normales y crashes de Swift.
142
-
143
-
### Swift Backtrace
144
-
145
-
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.
146
-
147
-
```sh
148
-
swift build -c release -Xswiftc -g
149
-
```
150
-
151
-
### Trazas de Error
152
-
153
-
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()`.
154
-
155
-
```swift
156
-
importVapor
157
-
158
-
structMyError: DebuggableError {
159
-
var identifier: String
160
-
var reason: String
161
-
var stackTrace: StackTrace?
162
-
163
-
init(
164
-
identifier: String,
165
-
reason: String,
166
-
stackTrace: StackTrace?= .capture()
167
-
) {
168
-
self.identifier= identifier
169
-
self.reason= reason
170
-
self.stackTrace= stackTrace
171
-
}
172
-
}
173
-
```
174
-
175
-
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.
176
-
177
-
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`.
178
-
179
-
```swift
180
-
// Siempre captura stack traces, sin importar el nivel de registro.
181
-
StackTrace.isCaptureEnabled=true
182
-
```
183
-
184
139
## Middleware de Error
185
140
186
141
`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.
Copy file name to clipboardexpand all lines: docs/basics/validation.es.md
+49-3
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Validación
2
2
3
-
La API Validation de Vapor te ayuda a validar peticiones entrantes antes de usar la API [Content](content.md) para decodificar datos.
3
+
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.
4
4
5
5
## Introducción
6
6
@@ -220,7 +220,7 @@ Debajo tienes una lista de los validadores soportados actualmente y una breve ex
220
220
|`.range(_:)`|El valor se encuentra en el `Range` (rango) proporcionado.|
221
221
|`.url`|Contiene una URL válida.|
222
222
223
-
Los validadores también pueden combinarse mediante operadores para construir validaciones complejas.
223
+
Los validadores también pueden combinarse mediante operadores para construir validaciones complejas. Más información sobre el validador `.custom` en [[#Validadores Personalizados]].
224
224
225
225
|Operador|Posición|Descripción|
226
226
|-|-|-|
@@ -230,7 +230,11 @@ Los validadores también pueden combinarse mediante operadores para construir va
230
230
231
231
## Validadores Personalizados
232
232
233
-
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.
233
+
Hay dos formas de crear validadores personalizados.
234
+
235
+
### Extendiendo la API Validation
236
+
237
+
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.
234
238
235
239
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.
236
240
@@ -287,3 +291,45 @@ Ahora que has definido el validador personalizado `zipCode`, puedes usarlo para
287
291
```swift
288
292
validations.add("zipCode", as: String.self, is: .zipCode)
289
293
```
294
+
295
+
### Validador `Custom`
296
+
297
+
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:
298
+
299
+
- Lógica de validación personalizada más sencilla de implementar.
300
+
- Sintaxis más corta.
301
+
302
+
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`.
Copy file name to clipboardexpand all lines: docs/basics/validation.md
+2-1
Original file line number
Diff line number
Diff line change
@@ -294,14 +294,15 @@ Now that you've defined the custom `zipCode` validator, you can use it to valida
294
294
```swift
295
295
validations.add("zipCode", as: String.self, is: .zipCode)
296
296
```
297
+
297
298
### `Custom` Validator
298
299
299
300
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:
300
301
301
302
- Simpler to implement custom validation logic.
302
303
- Shorter syntax.
303
304
304
-
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.
305
+
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.
0 commit comments