6

現在、Rails アプリケーションで REST API のバージョン管理を実装しています。これを実装して、新しいバージョンでのみ新しい機能を定義する方法はありますか? たとえば、次のように言います。

ユーザーコントローラーと製品コントローラーがあります。製品は V1 と V2 の間で同じままですが、ユーザーは変更されました。製品の V2 を呼び出した場合に、アプリケーションがそれが存在しないことを認識し、代わりに最新のコントローラー バージョン (この場合は V1) を使用するように設定できるとよいでしょう。これにより、バージョンごとにまったく新しいコントローラー セットを作成する必要がなくなります。変更された特定の機能に対してのみ新しいコントローラーを作成します。

以下は私たちの Routes.rb からのスニペットです。確かに、この問題に対処する方法がわかりません。どんな助けでも大歓迎です!

namespace :api do
    scope module: :v1, constraints: ApiConstraints.new(version: 1) do
      resources :users
      resources :products
    end
    scope module: :v2, constraints: ApiConstraints.new(version: 2) do
      resources :users
    end 
end
4

3 に答える 3

1

グレープはもうご覧になりましたか?

私が構築した API に対して行ったことは、それらすべてに対して何かが変更された場合 (認証など)、特定のバージョン管理された API コントローラーからすべてを継承し、Api::V1::BaseControllerそこに共通の動作とコントロールを配置することです。

通常、API の変更は表現の変更も意味するため、表現を生成するツールを使用することも非常に重要です。これには、次のような多くの gem があります。

于 2012-09-01T16:43:07.870 に答える
1

これがGrapeの目的です。

さらに、API を routes.rb ファイルにマウントするか、config.ru にマッピングして、Rails スタックをバイパスし、API のパフォーマンスを大幅に向上させるオプションがあります。

于 2012-09-01T16:43:26.607 に答える