Александр Борисов, 17 января 2015
Для вывода данных в формате JSON в API на Grape удобно использовать гем grape-entity. Этот гем позволяет переименовывать, документировать, группировать ключи, выводить в качестве значений результат работы кода, определённого в презентере:
Результат работы презентера выводится методом present
. Вызовов present
может быть несколько. Каждому вызову можно указать опцию type
, чтобы потом выводить те или иные ключи в зависимости от её значения.
Логично отнести классы сущностей к презентерам:
app/ presenters/ api/ v1/ status/ stats_entity.rb base_entity.rb address_entity.rb status_entity.rb status_detailed_entity.rb
У гема grape-entity удобный и простой DSL. Из-за того, что каждая сущность реализуется отдельным классом, очень просто уточнять вывод сущностей через наследование. Использование кода не выглядит странным.
Для каждого узла можно указать тип и описание прямо в коде. Эту информацию можно использовать для автоматического создания документации с помощью гема grape-swagger.
Кэшировать вывод grape-entity удобно с помощью гема garner. Не совсем понятно, как реализовывать кэширование вложенных сущностей.
В следующей статье я расскажу про обработку ошибок в API на Grape.
Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.
Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11