0Pricing
Swift Academy · Lección

Enrutamiento y gestión de solicitudes

Defina rutas y gestione solicitudes HTTP.

Enrutamiento y gestión de solicitudes es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué es Vapor?

Vapor es un popular framework web de Swift para el servidor, creado sobre SwiftNIO. Permite escribir backends HTTP —API y sitios web— completamente en Swift, compartiendo el lenguaje e incluso los modelos con su app de iOS.

import Vapor

let app = try await Application.make(.detect())

La aplicación y las rutas

El objeto Application es el núcleo de un servidor Vapor. En él se registran las rutas: asignaciones de un método HTTP y una ruta a un cierre controlador que devuelve una respuesta.

app.get("hello") { req in
    "Hello, world!"
}

Ayudantes para métodos HTTP

Vapor ofrece un ayudante para cada verbo HTTP: app.get, app.post, app.put, app.patch y app.delete. Cada uno recibe componentes de ruta y un controlador.

app.post("users") { req in
    "Created a user"
}
app.delete("users") { req in
    "Deleted a user"
}

Segmentos de ruta

Pase varios segmentos de cadena para construir rutas anidadas. La llamada siguiente responde a GET /api/v1/status.

app.get("api", "v1", "status") { req in
    "OK"
}

Parámetros de ruta

Use un segmento precedido por dos puntos para capturar un valor dinámico. Léalo de la solicitud con req.parameters.get(_:). En el ejemplo siguiente, solicitar /users/42 captura 42.

app.get("users", ":id") { req -> String in
    let id = req.parameters.get("id") ?? "unknown"
    return "User id is " + id
}

Parámetros tipados

Puede convertir un parámetro a un tipo concreto pasando el tipo a get. Si la conversión falla, Vapor devuelve automáticamente un 404, lo que mantiene limpios los controladores.

app.get("posts", ":id") { req -> String in
    let id = try req.parameters.require("id", as: Int.self)
    return "Post number " + String(id)
}

Parámetros de consulta

Lea los elementos de consulta de la URL mediante req.query. Para /search?term=swift, puede decodificar el término directamente. Los valores opcionales ausentes simplemente se devuelven como nil.

app.get("search") { req -> String in
    let term = try req.query.get(String.self, at: "term")
    return "Searching for " + term
}

Grupos de rutas

Agrupe rutas relacionadas bajo un prefijo compartido con app.grouped(...). Esto evita repetir componentes de ruta y mantiene juntos los endpoints relacionados.

let users = app.grouped("users")
users.get { req in "List users" }      // GET /users
users.post { req in "Create user" }    // POST /users

Devolución de distintos tipos de respuesta

Un controlador puede devolver un String, un HTTPStatus, un tipo Content personalizado o una Response completamente construida. Vapor sabe cómo codificar cada uno en una respuesta HTTP.

app.delete("cache") { req -> HTTPStatus in
    // clear something
    return .noContent // 204
}

Lanzamiento de errores con Abort

Lance Abort(_:) para interrumpir una solicitud con un estado HTTP específico y un motivo opcional. Vapor lo convierte en una respuesta de error JSON clara.

app.get("secret") { req -> String in
    guard req.headers.first(name: "X-Key") == "open" else {
        throw Abort(.forbidden, reason: "Missing key")
    }
    return "Welcome"
}

Controladores asíncronos

Vapor 4+ es totalmente compatible con async/await. Marque el cierre controlador como async y use try await dentro de él para trabajar con bases de datos o redes.

app.get("ping") { req async throws -> String in
    try await Task.sleep(for: .milliseconds(10))
    return "pong"
}

Comprobación rápida: enrutamiento

Confirme sus conocimientos sobre enrutamiento.

Resumen: enrutamiento y gestión de solicitudes

Ahora puede configurar un servidor Vapor:

  • Registre rutas con app.get/post/put/patch/delete y segmentos de ruta.
  • Capture valores dinámicos con :param y léalos mediante req.parameters (con tipo usando require(_:as:)).
  • Lea los elementos de consulta desde req.query y agrupe rutas con grouped.
  • Devuelva cadenas, estados o contenido; lance Abort para los errores y use controladores asíncronos.

Preguntas frecuentes

¿La lección «Enrutamiento y gestión de solicitudes» es gratis?

Sí — el texto completo de «Enrutamiento y gestión de solicitudes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Enrutamiento y gestión de solicitudes»?

Defina rutas y gestione solicitudes HTTP. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Enrutamiento y gestión de solicitudes»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Enrutamiento y gestión de solicitudes
  2. Codificación de contenido y JSON
  3. ORM y modelos con Fluent
  4. Middleware y autenticación
← Volver a Swift Academy