Это зависит от ваших предпочтений и потребностей.
Если вы работаете с интерфейсом Ember.js, я бы склонялся к active_model_serializers
, так как Ember.js в основном был создан для хорошей работы с ним (Йехуда Кац является одним из сопровождающих active_model_serializers
и входит в основную команду Ember.js). ; некоторое время назад он выступал на эту тему).
Быстрая разбивка:
Активные сериализаторы моделей
Разделяет проблему сериализации в отдельную папку /app/serializers
, поставляется с собственным генератором Rails и ведет себя больше как ActiveRecord, поскольку вы можете определять ассоциации в сериализаторе. Затем он будет делать правильные вещи автоматически, основываясь на своих самоуверенных соглашениях (например, верблюжья оболочка, ассоциации с боковой загрузкой... и т. д.). У Райана Бейтса есть отличный выпуск RailsCast на эту тему: http://railscasts.com/episodes/409-active-model-serializers
JBuilder
Jbuilder использует почти противоположный подход в том смысле, что он считает построение формата JSON просто еще одним представлением Rails. Вы создаете свои ответы в соответствующих каталогах /app/views/
точно так же, как и с шаблонами представлений. И он может приобретать многие характеристики шаблона представления, такие как понимание того, что такое current_user
, из коробки (это не так прямолинейно с AMS), связывание отношений (@user.posts
)... и т. д. И, конечно же, Райан Бейтс также сделал RailsCast на эту тему: http://railscasts.com/episodes/320-jbuilder
Альтернатива: Рабль
Райан Бейтс (естественно) также сделал RailsCast на Рабле: http://railscasts.com/episodes/322-rabl. По идее, он намного ближе к Jbuilder, чем к AMS. И это также было вокруг дольше. Лично мне не очень нравится его синтаксис. Но это вопрос мнения.
Если бы я не работал над проектом Ember.js, я бы выбрал Jbuider из-за его простоты и более доступной концепции.
Что касается производительности, по крайней мере один пользователь утверждает, что вы можете сделать Jbuilder намного быстрее, чем Rabl и AMS: https://medium.com/@lgmspb/how-we-increased-the-speed-of-json-генерацияв3000раз-ca9395ab7337
Дополнение (22.01.2015): Ли Холлидей написала хороший ускоренный курс, в котором сравнила некоторые из жемчужин. В статье рассматриваются еще несколько альтернатив в дополнение к упомянутым здесь. https://www.leighhalliday.com/responding-with-json-in-rails
person
poweratom
schedule
24.10.2014