Cómo escribir una API REST en Swift en 30 minutos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué Swift para REST API?

Swift no es solo un lenguaje para aplicaciones móviles. Gracias a frameworks como Vapor y Kitura, puedes crear REST API completos para el lado del servidor. Esto es especialmente útil si tu aplicación iOS ya usa Swift: puedes escribir tanto el cliente como el servidor en el mismo lenguaje, reduciendo el tiempo de desarrollo y simplificando el mantenimiento del código.

En este artículo crearemos un REST API simple en Swift usando el framework Vapor — la solución más popular para desarrollo backend en Swift. Configuraremos el servidor, añadiremos rutas para operaciones CRUD y lo probaremos. Todo el proceso tomará no más de 30 minutos.

Requisitos: macOS o Linux, tener instalado Swift 5.8+ (o superior), comprensión básica de HTTP y JSON.



Paso 1: Instalación y configuración del proyecto Vapor

Vapor proporciona una herramienta CLI conveniente para un inicio rápido. Instálala a través de Homebrew:

brew install vapor

Luego crea un nuevo proyecto:

vapor new MyAPI --template=apicd MyAPI

La bandera --template=api crea un esqueleto con la estructura mínima para un REST API. Después de crear el proyecto, ábrelo en Xcode (o cualquier editor):

open Package.swift

La estructura del proyecto incluye:

  • Sources/App/ — la lógica principal (rutas, controladores, modelos).
  • Sources/App/routes.swift — registro de rutas.
  • Sources/App/configure.swift — configuración de la aplicación.
  • Package.swift — dependencias (Vapor ya está incluido).

Si usas Xcode, descargará las dependencias automáticamente. En la terminal ejecuta vapor build para compilar.



Paso 2: Creación del modelo de datos y la base de datos

Para el REST API necesitamos un modelo. Crearemos un modelo simple Task (tarea) con los campos: id, title, completed. En Vapor, los modelos normalmente heredan de Model (Fluent ORM).

Crea el archivo Sources/App/Models/Task.swift:

import Fluentimport Vapor

final class Task: Model, Content { static let schema = "tasks"

@ID(key: .id) var id: UUID?

@Field(key: "title") var title: String

@Field(key: "completed") var completed: Bool

init() {}

init(id: UUID? = nil, title: String, completed: Bool = false) { self.id = id self.title = title self.completed = completed }}

Ahora crearemos una migración para la tabla en la base de datos. Crea el archivo Sources/App/Migrations/CreateTask.swift:

import Fluent

struct CreateTask: Migration { func prepare(on database: Database) -> EventLoopFuture<Void> { database.schema("tasks") .id() .field("title", .string, .required) .field("completed", .bool, .required) .create() }

func revert(on database: Database) -> EventLoopFuture<Void> { database.schema("tasks").delete() }}

Añade la migración en configure.swift:

app.migrations.add(CreateTask())

Por defecto, Vapor usa SQLite (un archivo en la carpeta del proyecto). Si quieres PostgreSQL o MySQL, cambia la configuración en configure.swift, pero para un inicio rápido SQLite es perfecto.



Paso 3: Registro de rutas del REST API

Ahora crearemos un controlador para manejar las solicitudes. Crea el archivo Sources/App/Controllers/TaskController.swift:

import Vaporimport Fluent

struct TaskController: RouteCollection { func boot(routes: RoutesBuilder) throws { let tasks = routes.grouped("tasks")

tasks.get(use: index) // GET /tasks tasks.post(use: create) // POST /tasks tasks.grou

Blogs

Book Recommendations