Routing e gestione delle richieste
Definisci percorsi e gestisci richieste HTTP.
Routing e gestione delle richieste è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Che cos'è Vapor?
Vapor è un popolare framework web Swift lato server basato su SwiftNIO. Consente di scrivere backend HTTP — API e siti web — interamente in Swift, condividendo il linguaggio e persino i modelli con la Sua app iOS.
import Vapor
let app = try await Application.make(.detect())L'Application e le route
L'oggetto Application è il cuore di un server Vapor. Su di esso si registrano le route: associazioni tra un metodo HTTP e un percorso e una closure handler che restituisce una risposta.
app.get("hello") { req in
"Hello, world!"
}Helper per i metodi HTTP
Vapor espone un helper per ogni verbo HTTP: app.get, app.post, app.put, app.patch e app.delete. Ognuno accetta componenti del percorso e un handler.
app.post("users") { req in
"Created a user"
}
app.delete("users") { req in
"Deleted a user"
}Segmenti del percorso
Passi più segmenti stringa per creare percorsi annidati. La chiamata seguente risponde a GET /api/v1/status.
app.get("api", "v1", "status") { req in
"OK"
}Parametri delle route
Utilizzi un segmento preceduto da due punti per acquisire un valore dinamico. Lo legga dalla richiesta con req.parameters.get(_:). Nell'esempio seguente, una richiesta a /users/42 acquisisce 42.
app.get("users", ":id") { req -> String in
let id = req.parameters.get("id") ?? "unknown"
return "User id is " + id
}Parametri tipizzati
Può convertire un parametro in un tipo concreto passando il tipo a get. Se la conversione non riesce, Vapor restituisce automaticamente un 404, mantenendo puliti gli handler.
app.get("posts", ":id") { req -> String in
let id = try req.parameters.require("id", as: Int.self)
return "Post number " + String(id)
}Parametri della query
Legga gli elementi della query dell'URL tramite req.query. Per /search?term=swift, può decodificare direttamente il termine. I valori facoltativi mancanti vengono semplicemente restituiti come nil.
app.get("search") { req -> String in
let term = try req.query.get(String.self, at: "term")
return "Searching for " + term
}Gruppi di route
Raggruppi le route correlate sotto un prefisso condiviso con app.grouped(...). In questo modo evita di ripetere i componenti del percorso e mantiene raggruppati gli endpoint correlati.
let users = app.grouped("users")
users.get { req in "List users" } // GET /users
users.post { req in "Create user" } // POST /usersRestituzione di diversi tipi di risposta
Un handler può restituire una String, un HTTPStatus, un tipo Content personalizzato o una Response completamente costruita. Vapor sa come codificarli in una risposta HTTP.
app.delete("cache") { req -> HTTPStatus in
// clear something
return .noContent // 204
}Generazione di errori con Abort
Lanci Abort(_:) per interrompere una richiesta con uno specifico stato HTTP e un motivo facoltativo. Vapor lo trasforma in una risposta di errore JSON chiara.
app.get("secret") { req -> String in
guard req.headers.first(name: "X-Key") == "open" else {
throw Abort(.forbidden, reason: "Missing key")
}
return "Welcome"
}Handler asincroni
Vapor 4+ supporta completamente async/await. Renda asincrona la closure dell'handler e utilizzi try await al suo interno per le operazioni sul database o sulla rete.
app.get("ping") { req async throws -> String in
try await Task.sleep(for: .milliseconds(10))
return "pong"
}Verifica rapida: routing
Verifichi le Sue conoscenze del routing.
Riepilogo: routing e gestione delle richieste
Ora è in grado di configurare un server Vapor:
- Registri le route con
app.get/post/put/patch/deletee i segmenti del percorso. - Acquisisca valori dinamici con
:parame li legga tramitereq.parameters(tipizzati conrequire(_:as:)). - Legga gli elementi della query da
req.querye raggruppi le route congrouped. - Restituisca stringhe, stati o contenuti; lanci
Abortper gli errori e utilizzi handler asincroni.
Domande Frequenti
La lezione «Routing e gestione delle richieste» è gratuita?
Sì — il testo completo di «Routing e gestione delle richieste» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Routing e gestione delle richieste»?
Definisci percorsi e gestisci richieste HTTP. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Routing e gestione delle richieste»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Routing e gestione delle richieste
- Codifica di contenuti e JSON
- ORM Fluent e modelli
- Middleware e autenticazione