Sinatra 过滤器
2023-12-19 16:16 更新
前置过滤器 (before) 在每个请求前,在请求的上下文环境中被执行,而且可以修改请求和响应。在过滤器中设定的实例变量可以被路由和模板访问:
before do
@note = 'Hi!'
request.path_info = '/foo/bar/baz'
end
get '/foo/*' do
@note #=> 'Hi!'
params[:splat] #=> 'bar/baz'
end
后置过滤器 (after) 在每个请求之后,在请求的上下文环境中执行,而且可以修改请求和响应。在前置过滤器和路由中设定的实例变量可以被后置过滤器访问:
after do
puts response.status
end
请注意:除非你显式使用 body 方法,而不是在路由中直接返回字符串,消息体在后置过滤器是不可用的,因为它在之后才会生成。
过滤器可以可选地带有范式 (pattern),只有请求路径满足该范式 (pattern) 时才会执行:
before '/protected/*' do
authenticate!
end
after '/create/:slug' do |slug|
session[:last_slug] = slug
end
和路由一样,过滤器也可以带有条件:
before :agent => /Songbird/ do
# ...
end
after '/blog/*', :host_name => 'example.com' do
# ...
end
以上内容是否对您有帮助:
更多建议: