0Pricing
Ruby Academy · Lekcja

Trasy i parametry

Obsługa HTTP

Trasy i parametry to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 2 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 Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.

Obsługa żądań HTTP

Aplikacje internetowe odpowiadają na żądania, dopasowując trasy i odczytując parametry.

  • Segmenty ścieżki mogą być dynamiczne
  • Query stringi przenoszą dodatkowe dane
  • Treści formularzy zawierają przesłane pola

Sinatra udostępnia wszystkie te dane za pośrednictwem hasha params.

require 'sinatra'

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

Nazwane parametry tras

Dwukropek w ścieżce definiuje nazwany parametr, który przechwytuje segment ścieżki.

  • /users/:id pasuje do /users/42
  • Przechwycona wartość pojawia się w params['id']
require 'sinatra'

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

Wiele parametrów

Trasa może zawierać kilka nazwanych parametrów.

  • Każdy segment poprzedzony dwukropkiem staje się kluczem w params
  • Kolejność w ścieżce nie ma znaczenia przy uzyskiwaniu dostępu do parametrów
require 'sinatra'

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

Parametry query stringu

Wartości query stringu występujące po ? również trafiają do params.

  • /search?q=ruby daje params['q'] == 'ruby'
  • Wiele par jest rozdzielanych za pomocą &
require 'sinatra'

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

Praca z params jako hashem

Obiekt params działa jak hash Ruby. Ćwiczenie na zwykłym hashu ułatwia zrozumienie tych schematów.

  • Dla bezpieczeństwa należy używać fetch z wartością domyślną
  • Zgodnie z konwencją klucze są ciągami znaków
params = { 'name' => 'Ada', 'lang' => 'Ruby' }

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

Dane formularza za pomocą POST

W przypadku żądań post przesłane pola formularza również pojawiają się w params.

  • Sinatra automatycznie analizuje treść żądania
  • Obowiązuje taki sam sposób dostępu jak w przypadku parametrów query stringu
require 'sinatra'

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

Parametry splat

Splat (*) dopasowuje dowolną liczbę znaków i przechowuje je w tablicy params['splat'].

  • /files/* przechwytuje resztę ścieżki
  • Wiele splatów tworzy wiele elementów tablicy
require 'sinatra'

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

Opcjonalne trasy i trasy z wyrażeniami regularnymi

Trasy mogą używać wyrażeń regularnych do precyzyjnego dopasowywania.

  • Przechwycone wartości są dostępne w params['captures']
  • Jest to przydatne w przypadku ograniczeń, takich jak akceptowanie wyłącznie numerycznych identyfikatorów
require 'sinatra'

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

Walidowanie parametrów

Należy zawsze walidować i konwertować przychodzące params, ponieważ docierają one jako ciągi znaków.

  • Do liczb należy używać to_i lub Integer()
  • Brakujące wymagane wartości należy odrzucać, zwracając zrozumiały błąd
def parse_id(raw)
  id = Integer(raw)
  raise 'must be positive' if id <= 0
  id
end

puts parse_id('42')

Wartości domyślne

Należy podawać rozsądne wartości domyślne dla opcjonalnych params, aby uniknąć błędów związanych z nil.

  • params.fetch('page', '1')
  • W celu bezpiecznej paginacji należy połączyć to z konwersją
params = { 'page' => nil }
page = (params['page'] || '1').to_i
puts "Page: #{page}"

Przekierowywanie

Należy używać redirect, aby przekierować klienta do innego adresu URL.

  • Domyślnie wysyłany jest status 302
  • Często stosuje się je po pomyślnym przesłaniu formularza
require 'sinatra'

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

Szybki test

Proszę sprawdzić swoją wiedzę o trasach i params.

Podsumowanie

Nauczył się Pan/Pani, jak Sinatra obsługuje dane wejściowe:

  • Named params używają :name w ścieżce
  • Query stringi i pola formularzy również uzupełniają params
  • Splaty i trasy z wyrażeniami regularnymi przechwytują elastyczne ścieżki
  • Należy zawsze walidować i konwertować params będące ciągami znaków
  • Należy używać redirect, aby przenosić klientów między adresami URL

Następnie zajmiemy się zwracaniem ustrukturyzowanych odpowiedzi JSON.

Często zadawane pytania

Czy lekcja „Trasy i parametry” jest bezpłatna?

Tak — pełny tekst „Trasy i parametry” 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 Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Trasy i parametry”?

Obsługa HTTP Ćwiczysz Ruby 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ąć Ruby Academy?

Nie wymagamy żadnego doświadczenia. Ruby 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 2 z 4.

Ile czasu zajmuje lekcja „Trasy i parametry”?

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 Ruby Academy?

Tak. Każda lekcja Ruby 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. Podstawy Sinatry
  2. Trasy i parametry
  3. API JSON
  4. Middleware i Rack
← Powrót do Ruby Academy