REST API в виде отдельного веб-приложения - PullRequest
3 голосов
/ 10 марта 2012

Вопрос по быстрому дизайну: лучше использовать отдельное веб-приложение для API REST или нет.

В настоящее время у меня есть API-интерфейс REST Jersey, который хорошо подходит для связи между компьютерами. Это относительно просто с GETS только. Структура состоит из внешнего интерфейса Jersey REST APi, дао в хранилище БД и пружинной защиты для перехвата URL-адресов и т. Д. Это хорошо работает.

Однако теперь мне нужно создать веб-приложение, чтобы позволить существующим пользователям возможность входить в систему и контролировать использование их API, регистрировать учетную запись пользователя, сбрасывать свои учетные данные и изменять свою подписку и т. Д. (Плюс еще).

Мне интересно, должен ли я объединить эти два файла и использовать один и тот же WAR-файл, так как они оба используют одни и те же внутренние базы данных и т. Д. Однако одна из них имеет состояние, а другая - API REST без сохранения состояния, требующий аутентификацию для каждого запроса. ..

Итак, я выбрал подход к веб-приложению с состоянием как к клиенту для REST API и выполняю следующие действия:

1) Рассматривать REST API как отдельное веб-приложение.

2) Создайте веб-приложение с сохранением состояния как отдельное веб-приложение и используйте Spring MVC или что-нибудь еще для внешнего интерфейса. Постоянное внутреннее хранилище будет одинаковым для обоих. Также будет компонент администратора, управляемый системой безопасности на основе ролей Spring.

Для второго веб-приложения я позволю пользователям совершать примеры вызовов REST API (первая война, просто щелкнув ссылки и используя свои учетные данные).

Этот подход кажется разумным? То есть одна WAR для API REST и отдельная WAR для веб-приложения с отслеживанием состояния.

Буду признателен за любые комментарии от тех, кто имеет больше опыта REST.

1 Ответ

2 голосов
/ 11 марта 2012

Хороший подход - сделать REST API отдельным приложением, независимо от других обстоятельств.У вас должен быть общий jar, содержащий бизнес-логику, которую вы можете включить во все проекты.Таким образом, вы сможете вызывать бизнес-методы как в API, так и в других веб-проектах без дублирования.

...