Estructura de Carpetas¶
Una vez has creado, compilado y ejecutado tu primera app de Vapor, vamos a familiarizarte con la estructura de carpetas de Vapor. La estructura está basada en la utilizada por SPM, así que si has trabajado anteriormente con SPM debería ser algo conocido.
.
├── Public
├── Sources
│ ├── App
│ │ ├── Controllers
│ │ ├── Migrations
│ │ ├── Models
│ │ ├── configure.swift
│ │ ├── entrypoint.swift
│ │ └── routes.swift
│
├── Tests
│ └── AppTests
└── Package.swift
Las secciones siguientes explican de manera más detallada cada parte de la estructura de carpetas.
Public¶
Esta carpeta contiene los ficheros públicos que serán servidos por tu app si FileMiddleware
está activado. Suelen ser imágenes, hojas de estilo o scripts de navegador. Por ejemplo, una petición a localhost:8080/favicon.ico
comprobará si Public/favicon.ico
existe y lo devolverá.
Necesitarás habilitar FileMiddleware
en tu fichero configure.swift
para que Vapor pueda servir ficheros públicos.
// Serves files from `Public/` directory
let fileMiddleware = FileMiddleware(
publicDirectory: app.directory.publicDirectory
)
app.middleware.use(fileMiddleware)
Sources¶
Esta carpeta contiene todos los ficheros Swift de código fuente para tu proyecto.
La carpeta App
, de nivel superior, corresponde al módulo de tu package,
tal y como está declarado en el manifiesto de SwiftPM.
App¶
Aquí es donde se aloja toda la lógica de tu app.
Controllers¶
Los controladores son una buena manera de agrupar lógica de aplicación. La mayoría de controladores tienen muchas funciones que aceptan una petición y devuelven algún tipo de respuesta.
Migrations¶
En esta carpeta es donde se ubican las migraciones de tu base de datos si estás usando Fluent.
Models¶
La carpeta models es un buen lugar en el que guardar los structs Content
o los Model
de Fluent.
configure.swift¶
Este fichero contiene la función configure(_:)
. Este método es llamado por entrypoint.swift
para configurar la Application
recién creada. Aquí es donde deberías registrar servicios como rutas, bases de datos, proveedores y otros.
entrypoint.swift¶
Este fichero contiene el punto de entrada @main
para la aplicación, que crea, configura y ejecuta tu aplicación Vapor.
routes.swift¶
Este fichero contiene la función routes(_:)
. Este método es llamado casi al final de configure(_:)
para registrar rutas en tu Application
.
Tests¶
Cada módulo no ejecutable en tu carpeta Sources
puede tener una carpeta correspondiente en Tests
. Contiene código del módulo XCTest
para hacer testing a tu package. Los tests pueden ser ejecutados usando swift test
en la línea de comandos o pulsando ⌘+U en Xcode.
AppTests¶
Esta carpeta contiene los tests unitarios para el código en tu módulo App
.
Package.swift¶
Finalmente está el manifiesto del package SPM.