Как оптимально получить меню в 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 Спасибо

Комментарии

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

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

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

0 Спасибо
Аватар пользователя multpix
multpix 6 месяцев назад

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

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 6 месяцев назад

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 6 месяцев назад

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

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

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

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 6 месяцев назад

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

0 Спасибо
Аватар пользователя multpix
multpix 6 месяцев назад
gun_dose написал:
Решил изучить принципы построения сайтов по принципу headless-Drupal

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

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

)))

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

Как же так!

0 Спасибо
Аватар пользователя multpix
multpix 6 месяцев назад

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

0 Спасибо
Аватар пользователя BatKor
BatKor 3 месяца назад

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 3 месяца назад

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

0 Спасибо
Аватар пользователя BatKor
BatKor 3 месяца назад 1

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

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

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

0 Спасибо
Аватар пользователя multpix
multpix 3 месяца назад

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 3 месяца назад

Тем более))

0 Спасибо
Аватар пользователя gun_dose
gun_dose 3 месяца назад

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

0 Спасибо
Аватар пользователя multpix
multpix 3 месяца назад

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

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

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 3 месяца назад

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

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

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

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

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

0 Спасибо