如何组织控制器层次结构,以便得到如下内容:
class ApplicationController < Sinatra::Application
set :namespace, '/api' # ???
end
class UsersController < AplicationController
namespace '/users' do
# /api/users/show
get '/show' do
# blablabla
end
end
end
class PostsController < ApplicationController
namespace '/posts' do
# /api/posts/show
get '/posts' do
# blablabla
end
end
end
我主要使用Rails,并且不知道在Sinatra可以做到这一点。
答案 0 :(得分:1)
你只需要改变一个词:
class ApplicationController < Sinatra::Base
路由继承不仅是设置,还包括Sinatra的每个方面 class将由其子类继承。这包括定义 路由,所有错误处理程序,扩展,中间件等。 但最重要的是,它将以方法的方式继承 遗传。如果你应该在有一个类之后定义一个路由 子类化,该路线也将在 子类。
如果您正在寻找HTML路由排序的命名空间而不仅仅是Ruby排序,那么请查看包含Sinatra命名空间的Sinatra Contrib。
如果你使用Sinatra命名空间,你可能想再改一个字:
class PostsController < ApplicationController
namespace '/posts' do
# /api/posts/show
get '/' do # otherwise the route would be /posts/posts
# blablabla
end
end
end