TL; DR: создание API.Нужны разные поля для разных версий.Научи меня, мудрые.
В настоящее время я пытаюсь найти лучший способ создания версионного API.То есть я хочу, чтобы URL-адрес /api/v1/projects.json
отображал список проектов с несколькими полями, а api/v2/projects.json
- список проектов с отдельными полями.
Я думал об этой проблеме около 15 минут, что, вероятно, означает, что все неправильно.На данный момент у меня есть это в моем app/models/project.rb
файле:
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
Это здорово и работает так, как мне бы хотелось, но, возможно, есть лучший способ.Это твоя задача!Поделитесь со мной своими горами мудрости создания API.
Бонусные баллы, если вы найдете решение, которое также позволит мне использовать методы для экземпляров объекта модели, такие как метод tickets_count
наProject
метод.