0Pricing
Ruby Academy · レッスン

ルートとパラメーター

HTTP を処理します。

「ルートとパラメーター」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。

HTTPリクエストの処理

Webアプリケーションは、ルートを照合し、パラメーターを読み取ってリクエストに応答します。

  • パスのセグメントは動的にできます
  • クエリ文字列には追加データを含められます
  • フォームの本文には送信されたフィールドが含まれます

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

複数のパラメーター

1つのルートに複数の名前付きパラメーターを含められます。

  • 各コロン付きセグメントが 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 を Hash として扱う

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'] から利用できます
  • 数値IDだけに限定する場合などに便利です
require 'sinatra'

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

パラメーターのバリデーション

受け取ったparamsは文字列として渡されるため、必ず検証して変換してください。

  • 数値には to_i または Integer() を使用します
  • 必須の値がない場合は、明確なエラーを返します
def parse_id(raw)
  id = Integer(raw)
  raise 'must be positive' if id <= 0
  id
end

puts parse_id('42')

デフォルト値

オプションのparamsには適切なデフォルト値を指定し、nilエラーを避けます。

  • 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

理解度チェック

ルートとparamsについての理解度を確認します。

まとめ

Sinatraで入力を処理する方法を学びました:

  • 名前付きparamsにはパス内で :name を使用します
  • クエリ文字列とフォームフィールドも params に値を設定します
  • スプラットと正規表現ルートで柔軟なパスを取得できます
  • 文字列のparamsは必ず検証して変換します
  • redirect を使ってクライアントをURL間で移動させます

次は、構造化されたJSONレスポンスを返します。

よくある質問

「ルートとパラメーター」レッスンは無料ですか?

はい。「ルートとパラメーター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。

「ルートとパラメーター」で何を学びますか?

HTTP を処理します。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ruby Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ルートとパラメーター」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このRuby Academyレッスンでコードを書いて実行できますか?

はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Sinatra の基礎
  2. ルートとパラメーター
  3. JSON API
  4. ミドルウェアと Rack
← Ruby Academyに戻る