在Padrino应用程序中,我有一个帖子控制器与传统路线:
Blog::App.controllers :posts do
get :index do
...
end
get :show, :with => :id do
...
end
end
因此,这为我提供了帖子命名空间
中的正常网址访问权限http://blog.dev/posts
http://blog.dev/posts/show/1
现在,我想通过REST API从名称空间之外的其他路径提供访问权限,例如:
http://blog.dev/api/v1/post/all
http://blog.dev/api/v1/post/1
如何使用其正常命名空间之外的路径为我的帖子控制器定义API?
我必须承认,我不确定我的方法是否常见。我可以定义一个新的 API V1 控制器,但在这种情况下,我将不得不在两个不同的地方复制有关帖子的信息。
如果应该使用 API 控制器,我想知道这项任务通常使用哪些宝石和/或约定。理想情况下,我希望能够使用当前模型对象协调不同的API版本。
答案 0 :(得分:2)
Blog::App.controllers :posts, map: '/api/v1/posts' do
get :index do
...
end
end
然后,如果你想添加该控制器的新版本
Blog::App.controllers :v2_posts, map: '/api/v2/posts' do
get :index do
...
end
end
(是的,似乎你不能拥有几个具有不同map
值的相同控制器的文件。)
所以,这不会起作用(对不起,如果有效,那就不是我尝试的时候),并且会导致问题:
Blog::App.controllers :posts, map: '/api/v1/posts' do
get :index do
...
end
end
Blog::App.controllers :posts, map: '/api/v2/posts' do
get :index do
...
end
end