Ruby 带RESTAPI的Padrino应用程序
在Padrino应用程序中,我有一个POST控制器,具有常规路线:Ruby 带RESTAPI的Padrino应用程序,ruby,rest,sinatra,padrino,Ruby,Rest,Sinatra,Padrino,在Padrino应用程序中,我有一个POST控制器,具有常规路线: Blog::App.controllers :posts do get :index do ... end get :show, :with => :id do ... end end 因此,这为我提供了posts命名空间内的正常URL访问 http://blog.dev/posts http://blog.dev/posts/show/1 现在,我想通过REST API从名称空间
Blog::App.controllers :posts do
get :index do
...
end
get :show, :with => :id do
...
end
end
因此,这为我提供了posts命名空间内的正常URL访问
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控制器来完成,我想知道这项任务通常使用哪些GEM和/或约定。理想情况下,我希望能够使用当前模型对象协调不同的API版本
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
这是一个rails教程。不过,我看不出有什么理由不能在您的案例中使用主逻辑。您的客户端和API应该是分开的。然后,客户机可以为数据调用API,而不是作为不同命名空间下的API。