Swift Academy · Oppitunti

Reititys ja pyyntöjen käsittely

Määritä reittejä ja käsittele HTTP-pyyntöjä.

Oppitunti 1/413 vaihetta

Reititys ja pyyntöjen käsittely on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mikä Vapor on

Vapor on suosittu SwiftNIO:n päälle rakennettu palvelinpuolen Swift-verkkokehys. Sen avulla voitte kirjoittaa HTTP-taustajärjestelmiä — rajapintoja ja verkkosivustoja — kokonaan Swiftillä sekä jakaa ohjelmointikielen ja jopa mallit iOS-sovelluksen kanssa.

import Vapor

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

Application ja reitit

Application-objekti on Vapor-palvelimen keskus. Rekisteröitte siihen reittejä: HTTP-metodin ja polun yhdistelmiä käsittelijä-closureen, joka palauttaa vastauksen.

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

HTTP-metodien apumetodit

Vapor tarjoaa apumetodin jokaista HTTP-verbiä varten: app.get, app.post, app.put, app.patch ja app.delete. Jokainen ottaa vastaan polun osat ja käsittelijän.

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

Polun osat

Muodostakaa sisäkkäisiä polkuja välittämällä useita merkkijono-osia. Alla oleva kutsu vastaa pyyntöön GET /api/v1/status.

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

Reittiparametrit

Kaapatkaa dynaaminen arvo käyttämällä kaksoispisteellä alkavaa polun osaa. Lukekaa arvo pyynnöstä metodilla req.parameters.get(_:). Alla pyydettäessä /users/42 kaapataan arvo 42.

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

Tyypitetyt parametrit

Voitte muuntaa parametrin konkreettiseen tyyppiin välittämällä tyypin metodille get. Jos muunnos epäonnistuu, Vapor palauttaa automaattisesti 404-virheen, joten käsittelijät pysyvät selkeinä.

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

Kyselyparametrit

Lukekaa URL-osoitteen kyselyparametrit kohteen req.query kautta. Osoitteessa /search?term=swift voitte dekoodata termin suoraan. Puuttuvat valinnaiset arvot palautuvat yksinkertaisesti arvona nil.

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

Reittiryhmät

Ryhmitelkää toisiinsa liittyvät reitit yhteisen etuliitteen alle metodilla app.grouped(...). Näin vältätte polun osien toistamisen ja pidätte toisiinsa liittyvät endpointit yhdessä.

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

Erilaisten vastaustyyppien palauttaminen

Käsittelijä voi palauttaa String-arvon, HTTPStatus-arvon, mukautetun Content-tyypin tai valmiiksi rakennetun Response-olion. Vapor osaa koodata jokaisen niistä HTTP-vastaukseksi.

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

Virheiden heittäminen Abortilla

Heittäkää Abort(_:) keskeyttääksenne pyynnön tiettyyn HTTP-tilaan ja valinnaiseen selitteeseen. Vapor muuntaa sen selkeäksi JSON-virhevastaukseksi.

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

Asynkroniset käsittelijät

Vapor 4+ tukee täysin async/await-toimintaa. Merkitkää handler-closure asynciksi ja käyttäkää sen sisällä try await-rakennetta tietokanta- tai verkkotoimintoihin.

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

Pikatarkistus: reititys

Varmistakaa reitityksen tuntemuksenne.

Kertaus: reititys ja pyyntöjen käsittely

Osaatte nyt määrittää Vapor-palvelimen:

  • Rekisteröikää reittejä metodeilla app.get/post/put/patch/delete ja polun osilla.
  • Kaapatkaa dynaamiset arvot syntaksilla :param ja lukekaa ne kohteen req.parameters kautta (tyypitettynä metodilla require(_:as:)).
  • Lukekaa kyselyparametrit kohteesta req.query ja ryhmitelkää reitit metodilla grouped.
  • Palauttakaa merkkijonoja, tiloja tai sisältöä, heittäkää virheissä Abort ja käyttäkää asynkronisia käsittelijöitä.
Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Reititys ja pyyntöjen käsittely” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Reititys ja pyyntöjen käsittely”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Reititys ja pyyntöjen käsittely”?

Määritä reittejä ja käsittele HTTP-pyyntöjä. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Reititys ja pyyntöjen käsittely”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Reititys ja pyyntöjen käsittely
  2. Sisältö ja JSON-koodaus
  3. Fluent ORM ja mallit
  4. Middleware ja autentikointi
← Takaisin: Swift Academy