que - sinatra ruby github
¿Antes-filtro para todas las solicitudes POST en Sinatra? (4)
Se me ocurrió esto:
before do
if request.request_method == "POST"
puts "pre-process POST"
end
end
... pero si alguien conoce una mejor manera, por favor comparte.
¿Hay alguna manera de crear un filtro "antes" para capturar y procesar previamente todas las solicitudes POST en Sinatra?
Tu solución es completamente válida.
Lo haría así:
before do
next unless request.post?
puts "post it is!"
end
O bien, también puede usar una ruta de publicación que atrapa todo y que luego entrega la solicitud (debe ser la primera ruta de publicación):
post ''*'' do
puts "post it is!"
pass
end
Una forma de hacerlo sería crear una condición personalizada para usar en el filtro:
set(:method) do |method|
method = method.to_s.upcase
condition { request.request_method == method }
end
before :method => :post do
puts "pre-process POST"
end
+1 en la respuesta de Matt anterior ... Terminé expandiéndolo para incluir soporte para uno o más métodos como ese:
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