1

私は現在、自分の Web サイトの API に関するドキュメントを作成しています。

ルートを記述する「最良の」方法についてはわかりません。Twitter はうまく機能していると思います。その URL 構造をコピーしたいと思います。

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
4

1 に答える 1

1

はい、カスタムルートが必要です。

ただし、:actionキーはコントローラーのアクション名用に予約されていることに注意してください。次のようなものを使用することをお勧めします:action_name

于 2012-04-05T04:57:37.343 に答える