Sinatra 触发另一个路由
2023-12-19 16:10 更新
有些时候,pass 并不是你想要的,你希望得到的是另一个路由的结果。简单的使用 call 可以做到这一点:
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。
如果你希望请求被发送到同一个应用,而不是副本,使用 call! 而不是 call.
如果想更多了解 call,请察看 Rack specification 中关于 call 的介绍。
以上内容是否对您有帮助:
更多建议: