Как разделить Rails App для пользовательского интерфейса и API - PullRequest
0 голосов
/ 27 января 2019

Как разделить Rails App для пользовательского интерфейса и API.Мы планируем создавать интерфейсы API с использованием rails --api и хотели бы разделить пользовательский интерфейс с использованием представлений Rails в отдельной базе кода.Поскольку мы можем перенести пользовательский интерфейс в React JS позже.Существуют ли какие-либо рекомендации по разделению бэкенда + кода пользовательского интерфейса.

Я не хочу, чтобы пользовательский интерфейс + код API сосуществовали, поскольку мы хотели бы масштабировать часть API отдельно

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Фактическое техническое решение довольно просто.

Вы можете просто установить два совершенно разных приложения rails - приложение API и приложение веб-интерфейса.Вы можете создавать приложения с помощью:

rails new app my_app_api --api
rails new app my_app

Каждое из них живет в своем собственном хранилище и может быть разработано отдельно.Каждое приложение работает на своем собственном сервере / dynos / что угодно.Вы можете смонтировать их в одном домене (example.com и api.example.com), изменив настройки CNAME своего домена.

Вы можете обмениваться кодом между приложениями, такими как модели, создав rails engine (драгоценный камень, который может быть установлен в рельсах).Драгоценный камень не должен быть публичным .

Преимущества этого подхода в том, что вы можете использовать более тонкий сервер для своего API, поскольку он не требует промежуточного программного обеспечения / гемов, необходимых для чего-то еще, кроме выплескивания JSON, и что разработку API можно отделить.Недостатком является повышенная сложность и потенциальное дублирование кода и усилий.

Однако, что вы действительно должны учитывать, так это то, что усилия по настройке отдельного приложения рельсов внешнего интерфейса в значительной степени напрасны, если желаемой конечной целью является SPA.Возможно, создание интерфейса rails будет не таким быстрым, и вы на самом деле не сможете много использовать повторно в коде.Вы также будете дублировать большую часть серверной логики, такой как маршруты и контроллеры.

Разработка вашего API также может быть затруднена, если вы не «едите свою собачью еду».

0 голосов
/ 27 января 2019

Я хотел бы:

  • создать для этого новый набор контроллеров API, что-то вроде UserApiController
  • создать новые маршруты, что-то вроде /api/v1.0/users/list;
  • сохранить контроллеры как можно более тонкими;
  • максимально использовать сервисы;
  • создать отдельный модуль для преобразования в / из json / xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...