Ruby Academy · Oppitunti

Reitit ja parametrit

Käsittele HTTP:tä.

Oppitunti 2/413 vaihetta

Reitit ja parametrit on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

HTTP-pyyntöjen käsittely

Web-sovellukset vastaavat pyyntöihin täsmäyttämällä reittejä ja lukemalla parametreja.

  • Polun osat voivat olla dynaamisia
  • Kyselymerkkijonot välittävät lisätietoja
  • Lomakerungot sisältävät lähetettyjä kenttiä

Sinatra tarjoaa kaikki nämä params-hashin kautta.

require 'sinatra'

get '/echo' do
  params['msg'].to_s
end

Nimetyt reittiparametrit

Kaksoispiste polussa määrittää nimetyn parametrin, joka sieppaa polun osan.

  • /users/:id täsmää polkuun /users/42
  • Siepattu arvo näkyy arvona params['id']
require 'sinatra'

get '/users/:id' do
  "User ID is #{params['id']}"
end

Useita parametreja

Reitillä voi olla useita nimettyjä parametreja.

  • Jokaisesta kaksoispisteellä alkavasta osasta tulee avain params-hashiin
  • Polun järjestyksellä ei ole merkitystä arvoja haettaessa
require 'sinatra'

get '/posts/:year/:month' do
  "Posts from #{params['month']}/#{params['year']}"
end

Kyselymerkkijonon parametrit

Kyselymerkkijonon arvot merkin ? jälkeen päätyvät myös params-hashiin.

  • /search?q=ruby tuottaa arvon params['q'] == 'ruby'
  • Useat avain–arvo-parit erotetaan merkillä &
require 'sinatra'

get '/search' do
  "Searching for: #{params['q']}"
end

params-parametrin käsittely Hash-oliona

params-olio toimii Ruby-hashin tavoin. Tavallisella hashilla harjoittelu tekee toimintamalleista selkeitä.

  • Käyttäkää fetch-metodia oletusarvon kanssa turvallisuuden lisäämiseksi
  • Avaimet ovat käytännön mukaan merkkijonoja
params = { 'name' => 'Ada', 'lang' => 'Ruby' }

puts params['name']
puts params.fetch('age', 'unknown')

Lomaketiedot POST-pyynnöllä

post-pyynnöissä lähetetyt lomakekentät näkyvät myös params-hashissa.

  • Sinatra jäsentää pyynnön rungon automaattisesti
  • Arvoihin pääsee käsiksi samalla tavalla kuin kyselyparametreihin
require 'sinatra'

post '/signup' do
  "Welcome, #{params['username']}"
end

Splat-parametrit

Splat (*) täsmää mihin tahansa merkkimäärään ja tallentaa merkit params['splat']-taulukkoon.

  • /files/* sieppaa polun loppuosan
  • Useat splatit tuottavat useita taulukon alkioita
require 'sinatra'

get '/files/*' do
  "Path: #{params['splat'].first}"
end

Valinnaiset ja regex-reitit

Reiteissä voidaan käyttää säännöllisiä lausekkeita täsmälliseen täsmäytykseen.

  • Siepatut arvot ovat käytettävissä kohteessa params['captures']
  • Hyödyllistä esimerkiksi rajoituksiin, joissa sallitaan vain numeeriset tunnisteet
require 'sinatra'

get %r{/item/(\d+)} do
  "Item #{params['captures'].first}"
end

Parametrien validointi

Tehkää saapuville params-parametreille aina validointi ja muunnos, sillä ne saapuvat merkkijonoina.

  • Käyttäkää numeroille to_i-metodia tai Integer()-metodia
  • Hylätkää puuttuvat pakolliset arvot selkeällä virheilmoituksella
def parse_id(raw)
  id = Integer(raw)
  raise 'must be positive' if id <= 0
  id
end

puts parse_id('42')

Oletusarvot

Antakaa valinnaisille params-parametreille järkevät oletusarvot nil-virheiden välttämiseksi.

  • params.fetch('page', '1')
  • Yhdistäkää tämä muunnokseen turvallisen sivutuksen toteuttamiseksi
params = { 'page' => nil }
page = (params['page'] || '1').to_i
puts "Page: #{page}"

Uudelleenohjaaminen

Käyttäkää redirect-metodia ohjataksenne asiakkaan toiseen URL-osoitteeseen.

  • Lähettää oletusarvoisesti 302-tilakoodin
  • Yleinen ratkaisu onnistuneen lomakkeen lähettämisen jälkeen
require 'sinatra'

post '/login' do
  redirect '/dashboard'
end

Pikatarkistus

Tarkistakaa, mitä tiedätte reiteistä ja params-parametreista.

Kertaus

Opitte, miten Sinatra käsittelee syötteitä:

  • Nimetyt params-parametrit määritetään polussa merkinnällä :name
  • Kyselymerkkijonot ja lomakekentät täyttävät myös params-hashin
  • Splatit ja regex-reitit sieppaavat joustavasti määritettyjä polkuja
  • Validoikaa ja muuntakaa merkkijonomuotoiset params-parametrit aina
  • Käyttäkää redirect-metodia asiakkaiden siirtämiseen URL-osoitteiden välillä

Seuraavaksi palautatte jäsenneltyjä JSON-vastauksia.

Aloita maksutta

Opi Ruby 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
29
Oppitunnit
109

Usein kysytyt kysymykset

Onko oppitunti ”Reitit ja parametrit” ilmainen?

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

Mitä opin oppitunnilla ”Reitit ja parametrit”?

Käsittele HTTP:tä. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?

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

Kuinka kauan ”Reitit ja parametrit”-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ä Ruby Academy-oppitunnilla?

Kyllä. Jokainen Ruby 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. Sinatran perusteet
  2. Reitit ja parametrit
  3. JSON-rajapinnat
  4. Middleware ja Rack
← Takaisin: Ruby Academy