Рейтинг:0

Разделенный сайт как уровень представления (отображения) для внешних микросервисов?

флаг dk

Я понимаю, что Drupal 9 из коробки очень эффективен, так как отделенный, он же безголовый, Drupal служит серверной частью для других приложений (основной REST, возможности JSONAPI).

Однако я думаю об обратном: использование Drupal 9 в качестве чистого уровня представления, который извлекает и отображает данные из различных внешних API микросервисов. Например, внешний API выводит список продуктов в формате JSON, а страница Drupal запрашивает эти данные для отображения на своей странице.

Может не потребоваться сопоставлять извлеченные данные с объектами Drupal, а просто отображать их на странице Drupal. (Причина, по которой я не хочу сопоставлять данные и сохранять их в Drupal, заключается в том, что это создаст дублированный набор данных, что, вероятно, не является хорошей практикой для настройки архитектуры микросервисов.)

Существуют ли на рынке для Drupal 9 рекомендуемые подходы, модули для такого случая? Если ни один модуль не подходит для этого случая, какие части dev я могу изучить (например, хуки, используемые модулем Views)?


ОБНОВЛЕНО @ 26 сентября 2021 г.

Для справки, и кого-то может заинтересовать такая ситуация, я заканчиваю экосистемой Feeds.

Ниже приведены предоставленные модули, которые работают вместе для этого:

  • Фиды
  • Расширяемые парсеры
  • Подделка каналов

Feeds (main) не поддерживает синтаксический анализ формата JSON, расширенные парсеры Feeds (feeds_ex) добавляют поддержку JSON, используют библиотеки JsonPath. Всегда используйте «композитор» для их установки, так как нужно решить множество зависимостей. Используйте модуль Ludwig, чтобы проверить, отсутствуют ли какие-либо необходимые библиотеки.

Отличная ссылка здесь: https://www.mediacurrent.com/blog/drupal-8-feeds-import-external-json-api/


Обновлено: Также

https://www.drupal.org/project/views_json_source

Рейтинг:1
флаг cn

Возможно, не потребуется сопоставлять извлеченные данные с объектами Drupal, просто просто отобразите их на странице Drupal.

Если вы извлекаете данные из внешнего источника и не используете сущности, зачем вообще использовать Drupal? Функция модуля JSON:API заключается в предоставлении объектов Drupal через JSON:API; это все, что он делает. Поэтому, если вы пойдете по маршруту JSON:API, вам нужно будет использовать сущности.

Так или иначе, Views и большинство других модулей Drupal сильно зависят от концепции сущностей. Entity API был вспомогательным модулем в D7, но он является частью ядра и одной из фундаментальных концепций D8/D9.

Поэтому при создании слоя отображения я бы начал с выяснения того, как сопоставить ваши внешние данные с объектами Drupal. Затем сначала поэкспериментируйте с JSON:API перед REST, потому что, если у вас уже есть сущности, JSON:API очень быстро настраивается (поскольку он предоставляет все сущности по умолчанию) и дает вам некоторое пространство для экспериментов.

Некоторые потенциально полезные модули:

  • Фиды получать данные извне и Подделка каналов настроить его (предварительно)
  • Поле JSON или же Поле JSONB хранить внешние данные JSON как JSON, избавляя от необходимости их немедленного анализа (ограничено базами данных, поддерживающими JSON)
  • JSON: Обозреватель API, PHPMyAdmin для JSON:API
  • JSON: Дополнительный API-- несмотря на название, этот модуль, вероятно, необходим. Он позволяет вам переименовывать ресурсы JSON:API вместо использования основных имен по умолчанию, а также позволяет легко отключать доступ к группам сущностей (что вам нужно, потому что раскрытие всего, что JSON:API делает по умолчанию, вероятно, слишком много)
  • JSON: включение API для слияния (автоматически извлекать ссылки на объекты)
  • JSON: Ресурсы API чтобы определить свои собственные конечные точки, чтобы делать все, что вы хотите (для всей пользовательской обработки)
флаг dk
спасибо за эти направления, это помогает. Я понимаю, что это, вероятно, более субъективная дискуссия, чем вопрос, он может быть закрыт. Но ваш ответ полезен. Благодарность!
флаг dk
re: «Если вы извлекаете данные из внешнего источника и не используете сущности, зачем вообще использовать Drupal?» Потому что я все еще хочу использовать очень мощные подсистемы D9 из коробки, такие как маршрутизатор, безопасность, поисковая оптимизация, кэширование, тематика и т. д.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.