0

私は次のようなアクションを持っています:

def show
    @p = Post.find(params[:id])
    respond_to do |format|
      format.html
      format.js
    end
  end

私はURLを取得します:

http://localhost:3000/post/1
http://localhost:3000/post/2
http://localhost:3000/post/3
.
.
.

この同じアクションに対して、次のような別のバージョンが必要です。

http://localhost:3000/v1/post/1
http://localhost:3000/v1/post/2
http://localhost:3000/v1/post/3
.
.
.

どうすればいいですか?

私はこのリソースを調べました:

https://github.com/bploetz/versionist

http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast

4

2 に答える 2

1

簡単な方法は、名前空間を使用することだと思います。たとえば、V1 :: PostsController、V2::PostsControllerなどです。

http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routingを参照してください

ただし、APIを作成するだけの場合は、バージョン管理サポートが組み込まれているため、https://github.com/intridea/grapeを使用することをお勧めします。

于 2012-07-01T14:28:26.120 に答える
0

ルートファイルに次のようなものを追加できます

map '/v1/post/:id' => 'yourcontroller#show'

それはあなたの既存のresources :postものか何かに追加されるでしょう。

于 2012-07-01T14:28:51.247 に答える