Я относительно новый с точки зрения навыков веб-разработки на Java. У меня есть проект, который, я думаю, мог бы стать хорошим кандидатом на службу RESTful из того, что я мало понимаю об API. Я пытаюсь вникнуть в детали того, как это должно быть структурировано, но на самом деле нигде не разбираюсь в поиске в Google и не читаю материал, который у меня уже есть. Я надеюсь, что этот пост приведет к некоторой проверке и / или перенаправлению с точки зрения моих знаний и предположений по этой теме.
Мое текущее предположение состоит в том, что моя служба RESTful будет иметь следующую структуру:
- База данных (SQL).
- ORM (я использую относительно непопулярную ORM, называемую CPO, но большинство людей просто заменит ее на Hibernate).
- Класс менеджера Java с методами, которые общаются с ORM для получения данных
- Класс / классы контроллера Java, которые обрабатывают сопоставление запросов и используют
@ResponseBody
для направления / обработки URL-адреса и действия по обработке данных с помощью HTTP-глаголов ( http://mysite.com/computers/dell может бытьGET
запросом со словом «dell») в URL-адресе, являющемся параметром, который будет возвращать JSON-массив информации о компьютерах dell). - Этот сервис должен быть выполнен с помощью Spring Boot или каким-то образом иметь возможность работать отдельно и быть независимым от любого другого приложения.
Теперь, если предположить, что вышеприведенное верно, тогда у меня будет (на очень базовом уровне) сервис RESTful, который любое приложение может использовать для потребления и использования данных.
Скажем, у меня есть веб-приложение. Допустим, я создаю веб-приложение об информации о компьютерном оборудовании и использую Spring для создания этого веб-приложения. Вот мои предположения:
- Я бы имел несколько представлений в виде JSP с JSP, включающими HTML, CSS и JavaScript. JavaScript будет обрабатывать вызовы AJAX для контроллера этого приложения по мере необходимости (ниже).
- Это веб - приложение также будет иметь свой собственный контроллер для обработки запросов URL в приложении и маршрутизации, и контроллер будет затем использовать, скажем,
ModelAndView
объект или что - то вдоль этих линий , чтобы «поговорить с» контроллером успокоительных сервиса, получить то , что данные передается , передать эти данные обратно в представление (Javascript, JSP и т. д.) для отображения.
Я на правильном пути, здесь? Я понимаю, что есть также аспект аутентификации для сервисов RESTful, но концептуально я еще не там (и мой проект будет использоваться в частной сети, поэтому безопасность на данном этапе не является приоритетом).
Любое понимание, критика, знание, обратная связь или разъяснение очень ценится.
@Autowire
Будет работать в качестве результата.Соглашаясь с большинством ответов от @ Minjun.Y, я думаю, что я бы использовал немного другой подход к слою REST и веб-страниц. Из моего прочтения вашего вопроса я думаю, что вы хотите представить как веб-интерфейс, так и интерфейс REST для внешнего мира. Чтение мало чего можно получить, читая POJO из базы данных, превращая данные в JSON, а затем обратно в POJO для использования JSP.
Я бы предпочел, чтобы уровень обслуживания выполнял всю реальную работу, и добавлял отдельные уровни представления для веб-приложения (JSP) и контроллера REST. Это будут отдельные контроллеры, в которые будет внедрена служба. В качестве альтернативы, используйте только службу REST и создайте всю логику представления на стороне клиента согласно предыдущему ответу.
Кроме того, я не большой поклонник модулей Maven. Наш Java-магазин будет реализовывать ваш проект так, чтобы сделать регулярные выпуски сервисного уровня, а затем сделать уровни представления зависимыми от последнего выпуска. Здесь есть место для обсуждения, но это, безусловно, работает для нас. Мы бы имели веб-интерфейс и REST-интерфейсы как отдельные проекты Maven, поскольку они обычно находятся в разных файлах .war и, следовательно, требуют отдельного развертывания.
Кстати, я бы подчеркнул необходимость в ускорении использования инструментов управления сборкой и зависимостями. Как только ваш проект вырастет до любого разумного размера, они вам понадобятся. Бесплатные инструменты, такие как Maven, Jenkins и Nexus, упрощают управление релизами.
источник