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

Unknow user · November 27, 2013 · Last by wpdreammelody replied at November 12, 2014 · 8046 hits

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,应该是匹配访问后缀的

Unknow user #2 November 28, 2013

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

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

Unknow user #4 November 28, 2013

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

Unknow user #5 January 25, 2014
Unknow user #6 January 25, 2014

楼主解决了吗??

You need to Sign in before reply, if you don't have an account, please Sign up first.