Вывод данных в API на Grape

Александр Борисов, 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

Удобство использования

У гема grape-entity удобный и простой DSL. Из-за того, что каждая сущность реализуется отдельным классом, очень просто уточнять вывод сущностей через наследование. Использование кода не выглядит странным.

Автоматическое создание документации

Для каждого узла можно указать тип и описание прямо в коде. Эту информацию можно использовать для автоматического создания документации с помощью гема grape-swagger.

Кэширование

Кэшировать вывод grape-entity удобно с помощью гема garner. Не совсем понятно, как реализовывать кэширование вложенных сущностей.


В следующей статье я расскажу про обработку ошибок в API на Grape.

Смотрите также


comments powered by Disqus
Блог Цифрономики

Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.

@cifronomika
RSS


Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11