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

Аватар пользователя gun_dose

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

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

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

ВложениеРазмер
Иконка изображения rest-menus.png44.92 КБ
Модули и темы:
Ключевые слова:
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя gun_dose
gun_dose 7 месяцев назад

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

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

Аватар пользователя multpix
multpix 7 месяцев назад

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

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

Аватар пользователя gun_dose
gun_dose 7 месяцев назад

Ты предлагаешь захардкодить в шаблон все пункты меню? Или как?

Аватар пользователя gun_dose
gun_dose 7 месяцев назад

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

Аватар пользователя multpix
multpix 7 месяцев назад
gun_dose написал:
Так или иначе, список пунктов меню должен лежать в бэкэнде.

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

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

Аватар пользователя gun_dose
gun_dose 7 месяцев назад

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

Аватар пользователя multpix
multpix 7 месяцев назад
gun_dose написал:
Решил изучить принципы построения сайтов по принципу headless-Drupal
gun_dose написал:
Но у этого чувака в видосах на странице нет ни одной менюшки.
gun_dose написал:
Мне нужно просто получить список ссылок меню.

)))

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

Как же так!

Аватар пользователя multpix
multpix 7 месяцев назад

api вообще не должна кандубасить маршрутизация фронт,
фронту пох что думает api о его маршрутизации

Аватар пользователя BatKor
BatKor 5 месяцев назад

Хотел задать вопрос, но пока писал понял.

Аватар пользователя gun_dose
gun_dose 5 месяцев назад

И что же именно ты понял?))

Аватар пользователя BatKor
BatKor 5 месяцев назад
1

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

Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Я тебе по секрету скажу, что хулиган и мультпикс по этой теме дальше хэллоуорлда не зашли))

Аватар пользователя multpix
multpix 5 месяцев назад

ээ..
дажи хелоуорда не было))))

Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Тем более))

Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Представь себе, я до сих пор на 100 процентов уверен, что я прав.

Аватар пользователя multpix
multpix 5 месяцев назад

со временем все поймешь, не торопи события)))

Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
Аватар пользователя multpix
multpix 5 месяцев назад

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

Аватар пользователя gun_dose
gun_dose 5 месяцев назад

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

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

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

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

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