W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在 Sinatra 中,一個(gè)路由分為兩部分:HTTP 方法 (GET, POST 等) 和 URL 匹配范式 (pattern)。每個(gè)路由都有一個(gè)要執(zhí)行的代碼塊:
get '/' do
.. 顯示內(nèi)容 ..
end
post '/' do
.. 創(chuàng)建內(nèi)容 ..
end
put '/' do
.. 更新內(nèi)容 ..
end
delete '/' do
.. 刪除內(nèi)容 ..
end
options '/' do
.. 顯示命令列表 ..
end
link '/' do
.. 建立某種聯(lián)系 ..
end
unlink '/' do
.. 解除某種聯(lián)系 ..
end
路由按照它們被定義的順序進(jìn)行匹配,這一點(diǎn)和 Rails 中的 routes 文件的定義類似。第一個(gè)與請(qǐng)求匹配的路由會(huì)被調(diào)用。
路由范式 (pattern) 可以包括具名參數(shù),參數(shù)的值可通過?params['name']
?哈希表獲得:
get '/hello/:name' do
# 匹配 "GET /hello/foo" 和 "GET /hello/bar"
# params[:name] 的值是 'foo' 或者 'bar'
"Hello #{params[:name]}!"
end
也可以通過代碼塊參數(shù)獲得具名參數(shù):
get '/hello/:name' do |n|
# 匹配"GET /hello/foo" 和 "GET /hello/bar"
# params[:name] 的值是 'foo' 或者 'bar'
# n 中存儲(chǔ)了 params['name']
"Hello #{n}!"
end
路由范式 (pattern) 也可以包含通配符參數(shù) (splat parameter),可以通過?params[:splat]
?數(shù)組獲得。
get '/say/*/to/*' do
# 匹配 /say/hello/to/world
params[:splat] # => ["hello", "world"]
end
get '/download/*.*' do
# 匹配 /download/path/to/file.xml
params[:splat] # => ["path/to/file", "xml"]
end
通過正則表達(dá)式匹配的路由:
get %r{/hello/([\w]+)} do
"Hello, #{params[:captures].first}!"
end
?%r{}
?表示字符串是正則表達(dá)式,這里需要注意的就是,將正則表達(dá)式匹配的變量捕獲到?params['captures']
?中了。
或者使用塊參數(shù):
get %r{/hello/([\w]+)} do |c|
"Hello, #{c}!"
end
路由范式也可包含可選的參數(shù):
get '/posts.?:format?' do
# matches "GET /posts" and any extension "GET /posts.json", "GET /posts.xml" etc.
# 匹配 "GET /posts" 以及帶任何擴(kuò)展名的 "GET /posts.json" , "GET /posts.xml" 等
end
路由也可使用查詢參數(shù):
get '/posts' do
# matches "GET /posts?title=foo&author=bar"
# 匹配 "GET /posts?title=foo&author=bar"
title = params['title']
author = params['author']
# 使用title和 author 變量,對(duì)于 /posts 路由,查詢參數(shù)是可選的
end
By the way, unless you disable the path traversal attack protection (see below), the request path might be modified before matching against your routes.
順便說一下,除非想要禁用 路徑遍歷攻擊保護(hù) (path traversal attack protection) , 請(qǐng)求路徑可在匹配路由之前修改。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: