Как оптимально получить меню в JSON?

Главные вкладки

Аватар пользователя gun_dose gun_dose 25 марта 2017 в 0:48

Решил изучить принципы построения сайтов по принципу headless-Drupal. Не могу понять, как лучше получить меню? Установил rest_menu_items и rest_menu_tree. Получил приблизительно такую картину:
меню
Смущает, что в первом варианте есть параметры
"meta_data":{"entity_id":"453"},"delete_route":{},"edit_route":{}},
вроде пустые, но закрадывается сомнение в безопасности.
Второй вариант почему-то возвращает не все пункты меню.
Третий вообще возвращает не пункты меню, а описание и название меню.

Думаю, я не первый задался этим вопросом, поэтому надеюсь, кто-нибудь поделится опытом.

ЗЫ: как вариант, подойдёт любой пример вменяемого сайта на headless-Drupal 8 - поковыряю его респонсы в девтузах, может пойму что-то))

ВложениеРазмер
Иконка изображения rest-menus.png44.92 КБ

Комментарии

Аватар пользователя gun_dose gun_dose 25 марта 2017 в 10:43

Спасибо за ссылку, много интересного. Но у этого чувака в видосах на странице нет ни одной менюшки. Соответственно, по моему вопросу там ничего нет.

Если что, мне не надо рассказывать про роутинг. Мне нужно просто получить список ссылок меню.

Аватар пользователя multpix multpix 25 марта 2017 в 14:17

тут тебе решать, насколько целесообразно в headless drupal использовать menu-ui
ладно бы данные, но меню то в апи зачем?

имхо.
ты ведь щелкаешь мышкой модель данных в дру (со всеми полями связями правами),
и для нее - строишь апи для фронта.
меню - это фронт, зачем там меню дру?

Аватар пользователя gun_dose gun_dose 25 марта 2017 в 16:20

Ну это же бред какой-то. Вот прикинь, есть навигационное меню с пунктами личный кабинет, мои заказы, справка, контакты. И вдруг надо туда впереть ссылку на страницу "публичная оферта". И что? Шаблоны править? Бред же. Так или иначе, список пунктов меню должен лежать в бэкэнде.

Аватар пользователя multpix multpix 25 марта 2017 в 16:34

gun_dose wrote:
Так или иначе, список пунктов меню должен лежать в бэкэнде.

вот опять "бред", "должен"...
это подход нуба, не инженера - ты пробуй, сравнивай, и бери оптимальный вариант)))

по мне - если разделяешь бек и фронт, начни с полного разделения.
иначе - ты себя просто изначально загоняешь в рамки.

Аватар пользователя gun_dose gun_dose 25 марта 2017 в 16:23

И опять же, то, что я собираюсь делать, полностью соответствует правой картинке. Список ссылок меню - это данные. И рендерить их я буду на клиенте.

Аватар пользователя multpix multpix 25 марта 2017 в 14:26

gun_dose wrote:

Решил изучить принципы построения сайтов по принципу headless-Drupal

gun_dose wrote:

Но у этого чувака в видосах на странице нет ни одной менюшки.

gun_dose wrote:

Мне нужно просто получить список ссылок меню.

)))

и у этих, с json_api менюшек друпальных нет...
https://www.youtube.com/playlist?list=PLZOQ_ZMpYrZsyO-3IstImK1okrpfAjuMZ

Как же так!

Аватар пользователя BatKor BatKor 4 июня 2017 в 17:32
1

Да появился тот же вопрос, как мне получать список меню. Но после комментов x..лиgаna, осознание прочтённого пришло с задержкой:-)

Аватар пользователя multpix multpix 5 июня 2017 в 17:57

суть в том, что друпаловские сервисы это далеко не единственный, и уж точно не самый лучший способ организовать данные и апи для доступа к ним.
это просто возможность - сделать бек на дру? да - можно.
нужно как минимум попробовать что-то иное, чтоб знать, чего вообще хотеть))))

Аватар пользователя gun_dose gun_dose 6 июня 2017 в 10:06

Суть в том, что для несферических ситуаций любые готовые решения ведут к ограничениям и проблемам. Классический REST-подход (один эндпоинт - один тип данных) ведёт к большой связности кода. В JSON-API - есть свои ограничения - он не умеет собирать обратные референсы и не умеет делать агрегацию. Естественно, я сейчас не про друпал, а вообще. Надо ещё посмотреть GraphQL - если он умеет обратные референсы и агрегации, то можно смело отказываться от всех остальных методик, хотя думаю вряд ли. И придётся по-прежнему лепить приложения из всего подряд.

Аватар пользователя gun_dose gun_dose 6 июня 2017 в 10:02

ХоолиGUN wrote:

А поэтому бек не может УПРАВЛЯТЬ фронтом, он может только давать данные, которые попросит фронт.

В любой многопользовательской и мало-мальски сложной системе фронт ведёт себя сообразно ситуации и данные перед отправкой с фронта или после приёма с фронта валидируются и проверяются права доступа. Именно поэтому зайдя в фэйсбук я вижу ссылки для администрирования страниц, которые я создал, а больше их никто не видит. И изначально эти данные находятся в бэке, и они являются для фронта управляющими.
ХоолиGUN wrote:

Изначально сущности сайта это Юзеры, ноды, комменты и таксономия

Сущности да. Но не едиными сущностями живут приложения. Помимо сущностей есть ещё действия, права доступа и информация о структуре сущностей, необходимая для генерации форм создания и редактирования тех же сущностей.

Аватар пользователя gun_dose gun_dose 24 июля 2018 в 16:18

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