#scala #playframework
#scala #playframework
Вопрос:
У меня вопрос….Я структурирую веб-сайт с помощью Play 2.7 (Scala). Я создаю что-то вроде cms .. где вы можете создавать Страницы, События, оставлять комментарии и так далее…Я застрял при создании навигационного меню, которое должно быть создано на основе некоторых данных, хранящихся в таблицах моей базы данных (категории).
Моя проблема в том, что эти «данные» должны извлекаться при каждом запросе (домашняя страница, страница событий, страница сообщений), и я не уверен в наилучшем подходе к этому. Я думал об этих 3 решениях:
-
Внедрите мою службу категорий на каждый контроллер и передавайте для каждого действия данные меню навигации в представлении
-
Создайте фильтр, который перед тем, как каждый контроллер вызовет службу, извлекает данные и передает их через запрос, в конечном итоге в моем шаблоне получите данные из «объекта запроса»
-
(не уверен, что это возможно) создайте модуль или помощник, который можно использовать непосредственно в шаблоне, что-то вроде @GiveMeTheMenu(), который возвращает Seq[Категория]
Что вы думаете? любой совет будет полезен!! спасибо вам всем.
Комментарии:
1. Лучший подход заключается в создании API.
2. Вы имеете в виду REST API? для внутренних данных и чего-то вроде AngularJS для клиентской части?
3. ДА. Просто немного изюминки, например, безопасное действие в вашем API, чтобы сделать его потрясающим 🙂
4. Для управления доступом к API и запросами
Ответ №1:
Что-то вроде этого @LucatT. Надеюсь, это поможет.
routes
GET /menu controllers.HomeController.giveMeTheMenu()
HomeController.scala
def giveMeTheMenu() = SecureUserAction.async { implicit request =>
// Codes here and fetch data from DB..
}
Комментарии:
1. Спасибо… Я думал о чем-то другом, но да, это мог бы быть правильный подход. Мне интересно, могло бы быть лучше создать все приложения на основе REST api .. возможно, с аутентификацией JWT сверху, используя также Akka {http и actors} и JsonSpraySupport. Спасибо вам за ваш ответ.