2015-06-04 116 views
2

我遇到问题,Grape对纯粹的通配符卡路线做出响应。葡萄中的通配符路线

,我的意思是,如果我有一个简单的路线定义为

get do 
... 
end 

我需要向API的所有潜在的请求作出回应。情况是我需要解析路径和参数,然后根据这些值通过决策树工作。

我试过在路由定义一些变化,如:

get '/*' do 
... 
end 

get '/(*)' do 
... 
end 

,但无济于事。

我知道在Grape中有正则表达式和路由锚定的一些支持,但我没有计算出它的运气。

谢谢!

回答

3

你是密切与语法的猜测,你只需要命名匹配PARAM:

例如

get '*thing' do 
    { :thing => params[:thing] } 
    end 

使用*将使帕拉姆捕捉URI路径的其余部分,忽略/分隔符。但除此之外,它的行为与其他参数一样。

注意这只会在机架内皮卡在最好的挂载点,所以如果你有

prefix  'api' 
    version  'v2' 

那么它将为路径如果您使用此自定义404或其他反应类似/api/v2/hkfhqk/fwggw/ewfewg

捕捉所有路线,那么你需要在最后添加它,否则它将掩盖更具体的路线。