TL; DR:APIを作成しています。異なるバージョンのフィールドが必要です。賢明な人を教えてください。APIが分離していることを保証する
私は現在、バージョン管理されたAPIを作成する最良の方法を見つけようとしています。つまり、一連のフィールドを持つプロジェクトのリストを表示する/api/v1/projects.json
というURLと、別々のフィールドを持つプロジェクトのリストを表示するapi/v2/projects.json
というURLを持っています。
私はこの問題を約15分間考えていましたが、これはおそらくすべてが間違っていることを意味しています。
def self.api_fields
{
:v1 => ["name"],
:v2 => ["name", "tickets_count"]
}
end
その後、私はこのように私のAPIコントローラ(api/v1/projects_controller.rb
)でこれを使用することができます:
def index
respond_with(Project.all(:select => Project.api_fields[:v1]))
end
これは素晴らしいですし、私は「として働く現時点では私は私のapp/models/project.rb
ファイルでこれを持っていますそれは好きですが、おそらくもっと良い方法があります。それはあなたの仕事です!あなたの山々のAPI作成の知恵を共有してください。
Project
メソッドのtickets_count
メソッドのように、モデルのオブジェクトのインスタンスのメソッドを使用できるようになるソリューションを考案した場合のボーナスポイントです。
これは私がすでにやっていることです。さまざまなフィールドを返すために異なるコントローラを使用しています。その部分は私が間違いなく釘付けにしてしまった。質問は、 "これは正しい方法ですか?" –
私には良い気分だと感じていますが、それが私が "ただのコメント"で答えを出した理由です - 私の知恵では十分自信がありません。 – polarblau
APIコントローラのディレクトリ構造も 'app/controllers/api/v2/categories_controller.rb'のようにする必要があります。 – yfeldblum