葡萄中的通配符路线
Wildcard route in Grape
我在让 Grape 响应纯通配符路由时遇到问题。
我的意思是,如果我有一条定义为
的简单路线
get do
...
end
我需要回复对 API 提出的所有潜在请求。情况是我需要解析路径和参数,然后根据这些值处理决策树。
我尝试了一些路由定义的变体,例如:
get '/*' do
...
end
get '/(*)' do
...
end
但是没有用。
我知道在 Grape 中有一些对正则表达式和路由锚定的支持,但我一直没搞清楚。
谢谢!
你已经猜到了语法,你只需要命名匹配的参数:
例如
get '*thing' do
{ :thing => params[:thing] }
end
使用 *
将使参数捕获 URI 路径的其余部分,忽略 /
分隔符。但除此之外,它的行为就像任何其他参数一样。
请注意,这最多只会在机架安装点内拾取,所以如果你有
prefix 'api'
version 'v2'
然后它将响应像 /api/v2/hkfhqk/fwggw/ewfewg
这样的路径
如果您将此用于自定义 404 或其他包罗万象的路由,则需要将其添加到末尾,否则它会屏蔽更多特定路由。
我在让 Grape 响应纯通配符路由时遇到问题。
我的意思是,如果我有一条定义为
的简单路线get do
...
end
我需要回复对 API 提出的所有潜在请求。情况是我需要解析路径和参数,然后根据这些值处理决策树。
我尝试了一些路由定义的变体,例如:
get '/*' do
...
end
get '/(*)' do
...
end
但是没有用。
我知道在 Grape 中有一些对正则表达式和路由锚定的支持,但我一直没搞清楚。
谢谢!
你已经猜到了语法,你只需要命名匹配的参数:
例如
get '*thing' do
{ :thing => params[:thing] }
end
使用 *
将使参数捕获 URI 路径的其余部分,忽略 /
分隔符。但除此之外,它的行为就像任何其他参数一样。
请注意,这最多只会在机架安装点内拾取,所以如果你有
prefix 'api'
version 'v2'
然后它将响应像 /api/v2/hkfhqk/fwggw/ewfewg
如果您将此用于自定义 404 或其他包罗万象的路由,则需要将其添加到末尾,否则它会屏蔽更多特定路由。