所以我的理解是停止命令应该停止当前过滤器中的请求,但它似乎继续。下面是一个非常简单的 Sinatra 应用程序来演示这一点。
服务器.rb
require 'sinatra'
before do
puts "before halt"
halt 401
puts "after halt"
end
before '/partners*' do
puts "i am in before /partners"
end
after '/partners*' do
puts "i am in after /partners"
end
get '/partners/v1/:public_id' do
puts "i am in the actual route"
end
我在以下位置调用“获取”:localhost:4567/partners/v1/111
我期望输出的内容:
before halt
实际输出的是什么:
before halt
i am in after /partners
所以我的问题是:
1.为什么停止继续(显示它达到after '/partners*'
)
2.为什么它会击中after '/partners*'
而不是击中before '/partners*'