15

Sinatra ですべての POST リクエストをキャプチャして前処理する「前の」フィルタを作成する方法はありますか?

4

4 に答える 4

13

あなたのソリューションは完全に有効です。

私は次のようにします:

before do
  next unless request.post?
  puts "post it is!"
end

または、リクエストを渡すキャッチオール ポスト ルートを使用することもできます (最初のポスト ルートである必要があります)。

post '*' do
  puts "post it is!"
  pass
end
于 2013-04-12T18:11:51.223 に答える
11

上記のmattの回答に+1 ...次のような1つまたは複数のメソッドのサポートを含めるように拡張しました。

set :method do |*methods|
    methods = methods.map { |m| m.to_s.upcase }
    condition { methods.include?(request.request_method) }
end

before method: [:post, :patch] do
    # something
end
于 2015-11-10T20:33:22.593 に答える
4

私はこれを思いつきました:

before do
    if request.request_method == "POST"
        puts "pre-process POST"
    end
end

...でも、もっと良い方法を知っている人がいたら教えてください。

于 2013-03-27T22:51:06.493 に答える