Мой последний проект для Flatiron включал SPA с бэкэндом Rails API и интерфейсом Javascript.
Использование рельсов в качестве API означало, что данные в бэкэнде должны были легко взаимодействовать с моим интерфейсом. Данные в серверной части должны быть как можно лучше структурированы, чтобы обеспечить максимально плавную работу этого интерфейса.
Хотя вполне возможно указать, какие данные должны отображаться в JSON внутри контроллера (и на самом деле Rails делает это довольно просто с помощью render :json), данные, которые выводятся с помощью этого метода, довольно беспорядочны. Опять же, вполне возможно очистить эти данные в контроллере, но есть также специальные драгоценные камни, которые сделают это за вас.
Для этого проекта я реализовал Fast JSON API, жемчужину, разработанную Netflix. Gem Fast JSON API предоставляет генератор сериализаторов в Rails, который поддерживает отношения has_many, own_to и has_one, все из которых я использовал в своем проекте.
С помощью этого драгоценного камня я смог использовать сериализацию своих данных, чтобы обеспечить единообразный и чистый ответ json на мой интерфейс.
Я смог указать, какие данные я хотел разрешить, а также смог легко включить отношения между моими моделями. Это было крайне важно, потому что у меня было много переплетенных отношений.
Мое приложение — это приложение для создания мира, предназначенное для писателей или любителей фэнтези, чтобы описать все аспекты мира.
У пользователей есть много миров, у миров много регионов, и у каждого региона есть множество деталей, таких как местность или климат, которые им принадлежат.
Чистота и предсказуемая организация этих данных позволили мне создать четкие, абстрактные функции, которые будут работать со всем спектром ответов из моей базы данных.