[Ruby] Sinatraでpostとget両方を処理を一括で書く

Sinatraでサイトを作る際に、postとgetそれぞれの処理を書くのが面倒だったので、両方を処理する方法を調べてみました。

両方を許容する関数を追加する

下記のサイトのやり方まんまです。

Accepting Both Get And Post Method in Sinatra

まずは、getとpost、どちらがきても変数を渡せるような関数を書きます。

def get_or_post(path, opts={}, &block)
  get(path, opts, &block)
  post(path, opts, &block)
end

route処理で「get_or_post」関数を使う

続いて、route処理をする際に、この「get_or_post」関数で呼び出します。

get_or_post '/' do
  'hello sinatra'
end

これで、get、post両方で受付ができます。


本来なら、getとpost両方を許容するのって微妙なのかもしれませんが、知っておくと便利かなと思うので、備忘録までに。