Sinatra sinatra 路由中的条件是什么意思啊

匿名 · 2013年11月27日 · 最后由 wpdreammelody 回复于 2014年11月12日 · 8051 次阅读

sinatra 手册上看到的下面的例子,是讲 sinatra 路由中的条件机制,有点不太明白,这里的条件中的user agent是指 http 请求头里的user agent?,那 HTTP 头中也没有host_nameprovides阿,而且最后那个自定义条件的例子也没有看很懂,求 sinatra 大神指点一下

条件

  • 路由也可以包含多样的匹配条件,比如 user agent:
get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
  "你正在使用Songbird,版本是 #{params[:agent][0]}"
end

get '/foo' do
  # 匹配除Songbird以外的浏览器
end
  • 其他可选的条件是 host_name 和 provides:
get '/', :host_name => /^admin\./ do
  "管理员区域,无权进入!"
end

get '/', :provides => 'html' do
  haml :index
end

get '/', :provides => ['rss', 'atom', 'xml'] do
  builder :feed
end
  • 你也可以很轻松地定义自己的条件:
set(:probability) { |value| condition { rand <= value } }

get '/win_a_car', :probability => 0.1 do
  "You won!"
end

get '/win_a_car' do
  "Sorry, you lost."
end

解释这个比较明确了,你理解的 agent 是对的,hostname 就是主机名,至于 provides,应该是匹配访问后缀的

匿名 #2 2013年11月28日

#1 楼 @otecteng 这个访问后缀也是在 http 请求头里的?

#2 楼 @zjhsdtc 有两个地方,url 后缀和 HTTP 的 ACCEPT header

匿名 #4 2013年11月28日

#3 楼 @nouse 哦这样 反正这里讲的东西都在 http 头里是吧 我再去研究研究 http 头

楼主解决了吗??

需要 登录 后方可回复, 如果你还没有账号请 注册新账号