Sinatra 中通配符和命名路由之间的区别
Difference between a wildcard and a named route in Sinatra
我一直在看关于 Sinatra 的几个教程,但找不到两者之间的区别,比如:
get "/hey/*/there/*"
对比
get "/hey/:first/there/:second"
我看到的唯一区别是访问参数的方式。因此,在第一种方式中,您可以通过以下方式访问它:
params[:splat][0]
params[:splat[1]
而第二种方式:
params[:first]
params[:second]
Sinatra 中的命名参数是否只是我们为其命名的通配符?这是唯一的区别吗?
它们并不完全相同。如果您想匹配不确定数量的参数,而不是单个(命名的)参数,Splats 会很有用。例如:
# Will match: "/hey/:first/there/:second"
# Will match: "/hey/*/there/*"
GET /hey/first/there/second
# Won't match: "/hey/:first/there/:second"
# Will match: "/hey/*/there/*"
GET /hey/first/second/there/third/fourth
我一直在看关于 Sinatra 的几个教程,但找不到两者之间的区别,比如:
get "/hey/*/there/*"
对比
get "/hey/:first/there/:second"
我看到的唯一区别是访问参数的方式。因此,在第一种方式中,您可以通过以下方式访问它:
params[:splat][0]
params[:splat[1]
而第二种方式:
params[:first]
params[:second]
Sinatra 中的命名参数是否只是我们为其命名的通配符?这是唯一的区别吗?
它们并不完全相同。如果您想匹配不确定数量的参数,而不是单个(命名的)参数,Splats 会很有用。例如:
# Will match: "/hey/:first/there/:second"
# Will match: "/hey/*/there/*"
GET /hey/first/there/second
# Won't match: "/hey/:first/there/:second"
# Will match: "/hey/*/there/*"
GET /hey/first/second/there/third/fourth