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

2023-12-19 16:10 更新

有些時(shí)候,pass 并不是你想要的,你希望得到的是另一個(gè)路由的結(jié)果。簡(jiǎn)單的使用 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

請(qǐng)注意在以上例子中,你可以更加簡(jiǎn)化測(cè)試并增加性能,只要簡(jiǎn)單將"bar"移動(dòng)到 helper 中,然后就可被/foo 和 /bar 同時(shí)使用的 helper。

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

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)