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
endNazwane parametry tras
Dwukropek w ścieżce definiuje nazwany parametr, który przechwytuje segment ścieżki.
/users/:idpasuje do/users/42- Przechwycona wartość pojawia się w
params['id']
require 'sinatra'
get '/users/:id' do
"User ID is #{params['id']}"
endWiele 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']}"
endParametry query stringu
Wartości query stringu występujące po ? również trafiają do params.
/search?q=rubydajeparams['q'] == 'ruby'- Wiele par jest rozdzielanych za pomocą
&
require 'sinatra'
get '/search' do
"Searching for: #{params['q']}"
endPraca 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ć
fetchz 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']}"
endParametry 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}"
endOpcjonalne 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}"
endWalidowanie 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_ilubInteger() - 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'
endSzybki 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ą
:namew ś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
- Podstawy Sinatry
- Trasy i parametry
- API JSON
- Middleware i Rack