0Pricing
Ruby Academy · Урок

Маршруты и параметры

Обрабатывайте HTTP

«Маршруты и параметры» — бесплатный урок Ruby Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Обработка запросов HTTP

Веб-приложения отвечают на запросы, сопоставляя маршруты и считывая параметры.

  • Сегменты пути могут быть динамическими
  • Строки запроса передают дополнительные данные
  • Тела форм содержат отправленные поля

Sinatra предоставляет доступ ко всему этому через хеш params.

require 'sinatra'

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

Именованные параметры маршрута

Двоеточие в пути определяет именованный параметр, который захватывает сегмент пути.

  • /users/:id соответствует /users/42
  • Захваченное значение появляется в params['id']
require 'sinatra'

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

Несколько параметров

Маршрут может содержать несколько именованных параметров.

  • Каждый сегмент с двоеточием становится ключом в params
  • Порядок в пути не влияет на доступ к параметрам
require 'sinatra'

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

Параметры строки запроса

Значения строки запроса после ? также попадают в params.

  • /search?q=ruby даёт params['q'] == 'ruby'
  • Несколько пар разделяются с помощью &
require 'sinatra'

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

Работа с параметрами как с хешем

Объект params ведёт себя как хеш Ruby. Практика с обычным хешем помогает понять эти шаблоны.

  • Для безопасности используйте fetch со значением по умолчанию
  • По соглашению ключи являются строками
params = { 'name' => 'Ada', 'lang' => 'Ruby' }

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

Данные формы с POST

В запросах post отправленные поля формы также появляются в params.

  • Sinatra автоматически разбирает тело запроса
  • Используется тот же способ доступа, что и для параметров строки запроса
require 'sinatra'

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

Параметры со звёздочкой

Параметр со звёздочкой (*) соответствует любому количеству символов и сохраняет их в массиве params['splat'].

  • /files/* захватывает оставшуюся часть пути
  • Несколько параметров со звёздочкой создают несколько элементов массива
require 'sinatra'

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

Необязательные маршруты и маршруты с регулярными выражениями

Для точного сопоставления в маршрутах можно использовать регулярные выражения.

  • Захваченные значения доступны в params['captures']
  • Это удобно для ограничений, например для идентификаторов, состоящих только из цифр
require 'sinatra'

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

Проверка параметров

Всегда проверяйте и преобразуйте входящие параметры, поскольку они поступают в виде строк.

  • Для чисел используйте to_i или Integer()
  • Отклоняйте отсутствующие обязательные значения с понятной ошибкой
def parse_id(raw)
  id = Integer(raw)
  raise 'must be positive' if id <= 0
  id
end

puts parse_id('42')

Значения по умолчанию

Задавайте разумные значения по умолчанию для необязательных параметров, чтобы избежать ошибок из-за отсутствующих значений.

  • params.fetch('page', '1')
  • Для безопасной разбивки на страницы сочетайте это с преобразованием типа
params = { 'page' => nil }
page = (params['page'] || '1').to_i
puts "Page: #{page}"

Перенаправление

Используйте redirect, чтобы отправить клиента на другой URL.

  • По умолчанию выдаётся статус 302
  • Часто применяется после успешной отправки формы
require 'sinatra'

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

Быстрая проверка

Проверьте, что Вы знаете о маршрутах и параметрах.

Итоги

Вы узнали, как Sinatra обрабатывает входные данные:

  • Именованные параметры задаются с помощью :name в пути
  • Строки запросов и поля форм также заполняют params
  • Параметры со звёздочкой и маршруты с регулярными выражениями захватывают пути гибкой структуры
  • Всегда проверяйте и преобразуйте строковые параметры
  • Используйте redirect, чтобы перенаправлять клиентов между URL

Далее Вы будете возвращать структурированные ответы JSON.

Часто задаваемые вопросы

Урок «Маршруты и параметры» бесплатный?

Да — полный текст урока «Маршруты и параметры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Маршруты и параметры»?

Обрабатывайте HTTP Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Маршруты и параметры»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы Sinatra
  2. Маршруты и параметры
  3. API JSON
  4. Промежуточное ПО и Rack
← Назад к Ruby Academy