広告 Ruby

Sinatraで遊ぼう!リクエスト処理編

リクエストされたパラメーターを表示させる

今回はリクエストに入ってきたパラメータを表示させる処理を書いていきます。

例えば「/hello/bacchi」をリクエストすると「hello bacchi」と表示させるのをやってみたいと思います。

パラメータにしたいものは「:name」として、「:」の後に変数名を付けてシンボルにしてください。

パラメーターは paramsハッシュで取得できます。
文字列の中で変数を展開するには「#{name}」とすればOKですね。

なので、「"hello #{params[:name]}"」とすればOKです。

get '/hello/:name' do
  "hello #{params[:name]}"
end

これをやってみましょう。

hello_bacchi

例えば「/hello/ruby」とすると「hello ruby」と表示されますし、
「/hello/sinatra」とすると「hello sinatra」と表示されます。

このようにリクエストで渡ってきたパラメータを使いたいという場合がよくありますので、その扱い方を覚えておいてください。

他にもこれと同じことを違う表現ですることもできるので見ていきましょう。

「params[:name]」といちいち書くのが面倒なときは、ブロックの引数を使って

get '/hello/:name' do |n| 
  "hello #{n}"
end

と指定すると、「params[:name]」を簡単に「n」とすることができます。

このように「/hello/linux」とリクエストすると「hello linux」と表示されますね。

hello_linux

複数のパラメータを表示させる

また、パラメータは 2 つ以上付けることもできます。
それのやり方も見ていきましょう。

例えば

get '/hello/:f_name/:l_name' do |f, l| 
  "hello #{f} #{l}" 
end

とすると、それぞれに渡されたパラメータが表示されます。

例えば「/hello/taro/yamada」とすると、「hello taro yamada」と表示されます。

hello_taroyamada

なお、パターンにマッチしないと下記のようなにエラーになってしまいます。

sntrerror

パラメータをオプショナルにしたい場合には、後ろに「?」を付ければ OK です。

この場合は「/」があってもなくてもという意味で「\'/hello/:f_name/?:l_name?\'」にしておきましょう。

get '/hello/:f_name/?:l_name?' do |f, l| 
  "hello #{f} #{l}" 
end

そうすると、このようにエラーなく、こちらだけ採用されているのが分かるかと思います。

hello_yamada

このようにリクエストのパラメータを表示させるというのはよくやりますので、やり方を覚えておくようにしてください。

Sponsor Link

-Ruby
-