用于API文档的Rails路由

时间:2012-04-05 01:03:47

标签: ruby-on-rails ruby-on-rails-3 rest documentation routes

我目前正在撰写我网站API的文档。

我不确定编写路线的“最佳”方式。我认为推特做得很好,我想复制他们的网址结构:

https://dev.twitter.com/docs/api
https://dev.twitter.com/docs/api/1/get/statuses/show/:id
https://dev.twitter.com/docs/api/1/post/statuses/retweet/:id

这将是:

 namespace :docs do
     resources :api do
         # and then... not sure
     end
 end

不确定如何编写此部分的路线:/get/statuses/show/:id

我应该创建自定义路线吗?

match "/:verb/:resource/:action/:params" => "api#resource"

或者有更好的方法吗?


我最终得到的,可能会帮助某人:)

Ibarcraft::Application.routes.draw do
    def api_versions; [:v1] end
    def api_verbs; [ :index, :show ] end

    constraints subdomain: "api" do
        scope module: "api", as: "api" do
            versions = api_versions

            versions.each do |version|
                namespace version, defaults: { format: "json" } do

                    # all my routes
                    resources :barcrafts, only: api_verbs do
                        collection do
                            get :search
                        end
                        scope module: "barcraft" do
                            resources :users, only: [:index]
                        end
                    end
                    # and more...

                end
            end

            match 'v:api/*path', to: redirect { |params, request| "/#{versions.last}/#{params[:path]}" + (params[:format] ? ".#{params[:format]}" : "") }
            match '*path', to: redirect { |params, request| "/#{versions.last}/#{params[:path]}" + (params[:format] ? ".#{params[:format]}" : "") }
        end
    end
end

1 个答案:

答案 0 :(得分:1)

是的,你需要自定义路线。

但是请注意,:action键是为控制器的操作名称保留的,更好地使用:action_name

之类的内容