Sinatra 觸發(fā)另一個路由

2023-12-19 16:10 更新

有些時候,pass 并不是你想要的,你希望得到的是另一個路由的結(jié)果。簡單的使用 call 可以做到這一點(diǎn):

get '/foo' do
  status, headers, body = call env.merge("PATH_INFO" => '/bar')
  [status, headers, body.map(&:upcase)]
end

get '/bar' do
  "bar"
end

請注意在以上例子中,你可以更加簡化測試并增加性能,只要簡單將"bar"移動到 helper 中,然后就可被/foo 和 /bar 同時使用的 helper。

如果你希望請求被發(fā)送到同一個應(yīng)用,而不是副本,使用 call! 而不是 call.

如果想更多了解 call,請察看 Rack specification 中關(guān)于 call 的介紹。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號