我遇到问题Grape回应纯粹的外卡路线。
我的意思是,如果我有一个简单的路由定义为
get do
...
end
我需要回应对API提出的所有潜在请求。我需要解析路径和参数,然后根据这些值来处理决策树。
我在路线定义上尝试了一些变体,例如:
get '/*' do
...
end
get '/(*)' do
...
end
但无济于事。
我知道Grape中的正则表达式和路由锚定有一些支持,但我没有把它弄清楚。
谢谢!
答案 0 :(得分:3)
您对语法的猜测很接近,您只需要命名匹配的参数:
E.g。
get '*thing' do
{ :thing => params[:thing] }
end
使用*
将使param捕获URI路径的其余部分,忽略/
个分隔符。但除此之外,它的行为与任何其他参数一样。
请注意,这只会在机架安装点内拾取最多,所以如果你有
prefix 'api'
version 'v2'
然后它会响应/api/v2/hkfhqk/fwggw/ewfewg
如果您将此用于自定义404或其他全部捕获路由,则需要在最后添加它,否则它将屏蔽更多特定路由。