Reititys ja pyyntöjen käsittely
Määritä reittejä ja käsittele HTTP-pyyntöjä.
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 /usersErilaisten 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/deleteja polun osilla. - Kaapatkaa dynaamiset arvot syntaksilla
:paramja lukekaa ne kohteenreq.parameterskautta (tyypitettynä metodillarequire(_:as:)). - Lukekaa kyselyparametrit kohteesta
req.queryja ryhmitelkää reitit metodillagrouped. - Palauttakaa merkkijonoja, tiloja tai sisältöä, heittäkää virheissä
Abortja käyttäkää asynkronisia käsittelijöitä.
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
- Reititys ja pyyntöjen käsittely
- Sisältö ja JSON-koodaus
- Fluent ORM ja mallit
- Middleware ja autentikointi