Swift Academy · Lekcja

Routing i obsługa żądań

Definiowanie tras i obsługa żądań HTTP.

Lekcja 1 z 413 kroki

Routing i obsługa żądań to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Czym jest Vapor?

Vapor to popularny serwerowy framework internetowy dla języka Swift, zbudowany na SwiftNIO. Pozwala pisać backendy HTTP — API i witryny — w całości w języku Swift, współdzieląc język, a nawet modele z aplikacją na iOS.

import Vapor

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

Aplikacja i trasy

Obiekt Application jest centralnym elementem serwera Vapor. Rejestrują Państwo na nim trasy: mapowania metody HTTP i ścieżki na handler, który zwraca odpowiedź.

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

Pomocnicze metody HTTP

Vapor udostępnia pomocniczą metodę dla każdego czasownika HTTP: app.get, app.post, app.put, app.patch i app.delete. Każda z nich przyjmuje składniki ścieżki oraz handler.

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

Segmenty ścieżki

Przekażcie Państwo wiele segmentów tekstowych, aby zbudować zagnieżdżone ścieżki. Poniższe wywołanie odpowiada na żądanie GET /api/v1/status.

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

Parametry trasy

Użyjcie Państwo segmentu poprzedzonego dwukropkiem, aby przechwycić dynamiczną wartość. Odczytajcie ją z żądania za pomocą req.parameters.get(_:). Poniżej żądanie /users/42 przechwytuje wartość 42.

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

Parametry typowane

Mogą Państwo przekonwertować parametr na konkretny typ, przekazując ten typ do get. Jeśli konwersja się nie powiedzie, Vapor automatycznie zwróci błąd 404, dzięki czemu handlery pozostaną przejrzyste.

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

Parametry zapytania

Elementy zapytania URL można odczytać za pomocą req.query. Dla adresu /search?term=swift mogą Państwo bezpośrednio zdekodować parametr term. Brakujące wartości opcjonalne są po prostu zwracane jako nil.

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

Grupy tras

Powiązane trasy można pogrupować pod wspólnym prefiksem za pomocą app.grouped(...). Pozwala to uniknąć powtarzania składników ścieżki i utrzymać powiązane endpointy razem.

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

Zwracanie różnych typów odpowiedzi

Handler może zwracać String, HTTPStatus, niestandardowy typ Content albo w pełni skonstruowaną wartość Response. Vapor wie, jak zakodować każdą z nich w odpowiedzi HTTP.

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

Zgłaszanie błędów za pomocą Abort

Rzućcie Państwo Abort(_:), aby przerwać obsługę żądania i zwrócić określony status HTTP oraz opcjonalny powód. Vapor przekształci go w przejrzystą odpowiedź JSON z błędem.

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

Handlery asynchroniczne

Vapor 4+ w pełni obsługuje async/await. Oznaczcie Państwo domknięcie handlera jako asynchroniczne i używajcie w nim try await podczas pracy z bazą danych lub siecią.

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

Szybki test: routing

Sprawdźcie Państwo swoją wiedzę o routingu.

Podsumowanie: routing i obsługa żądań

Mogą już Państwo skonfigurować serwer Vapor:

  • Rejestrować trasy za pomocą app.get/post/put/patch/delete i segmentów ścieżki.
  • Przechwytywać dynamiczne wartości za pomocą :param i odczytywać je przez req.parameters (z określonym typem przy użyciu require(_:as:)).
  • Odczytywać elementy zapytania z req.query i grupować trasy za pomocą grouped.
  • Zwracać ciągi tekstowe, statusy lub zawartość, zgłaszać błędy za pomocą Abort i używać asynchronicznych handlerów.
Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Routing i obsługa żądań” jest bezpłatna?

Tak — pełny tekst „Routing i obsługa żądań” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Routing i obsługa żądań”?

Definiowanie tras i obsługa żądań HTTP. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Routing i obsługa żądań”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Routing i obsługa żądań
  2. Kodowanie treści i JSON
  3. Fluent ORM i modele
  4. Middleware i uwierzytelnianie
← Powrót do Swift Academy