您好我正在为应用构建REST api,我对URL有要求 这样的网址应该是这样的,例如
www.abc.com/api/param1/value1/param2/value2/param3/value3.... and so on
有案例
案例:参数的数量不受限制,可以频繁更改
如果今天是这样的话
www.abc.com/api/param1/value1/param2/value2/param3/value3
明天它可以是这样的
www.abc.com/api/param1/value1/param2/value2/param3/value3/param4/value4
配置url模式后是否有配置? 一切顺利
并且conrtoller
params
应该包含这种键值对
{ "param1" => "value1","param2" => "value2","param3" => "value3"...and so on }
任何建议!!怎么实现这个?
答案 0 :(得分:1)
如果你的参数没有修复,你可以在路由中使用通配符
例如
get 'items/list/*specs', controller: 'items', action: 'list'
def list
specs = params[:specs] # e.g, "base/books/fiction/dickens" #split it and place in a hash
end
答案 1 :(得分:0)
Rails路由提供了一种指定具有静态和动态段的完全自定义路由的方法,如Rails Routing Guide中所述。
您的要求应该可以通过
实现get '/api/param1/:param1/param2/:param2/...', to: 'controller#action'
答案 2 :(得分:0)
您可以使用route scoping
来解决此类问题。换句话说,它是nested routes
更多详情:http://guides.rubyonrails.org/routing.html#nested-resources
这是一个例子,
GET /magazines/:magazine_id/ads/:id/edit ads#edit
return an HTML form for editing an ad belonging to a specific magazine
我认为这会对你有所帮助。