Входы и источники данных
Эта глава описывает, как Recipe объявляет входы и как узел Document хранит связь с источником данных.
Входы Recipe
Recipe объявляет входы, но сам не обращается к базе или API. Вход бывает трёх видов:
parameter— простое значение без внешнего источника;setting— настройка сайта, раздела или страницы;content— содержимое.
Каждый вход имеет схему значения, а для настройки и содержимого — ожидаемое
происхождение expectedOrigin: владелец, имя и при необходимости ревизия.
"body": {
"kind": "content",
"schema": {"type": "array"},
"expectedOrigin": {"owner": "example/content", "ref": "article.demo", "revision": "108"}
}
Значение по умолчанию у входа может быть только готовым литералом.
Входы нужны, когда текст, карточки или настройки приходят из базы, API проекта или системы управления сайтом. Проект проверяет права и передаёт Framework доверенный снимок значений (Снимок входов). Токены, SQL, закрытые адреса и готовые запросы в Recipe не помещают.
Привязки к источнику
Узел, содержимое которого пришло из внешнего источника, хранит привязку
(bindings). В Recipe привязка пишется коротко — {input, target}, а в
готовом Document превращается в полную запись происхождения:
"bindings": [{"owner": "project/catalog", "ref": "products", "target": "items", "revision": "42"}]
Привязка сообщает продукту, какой набор данных стоит за узлом: владелец
owner, имя набора ref, поле узла target и ревизия. Сама по себе она не
загружает данные и не даёт доступа. normalize() собирает все привязки
документа в список зависимостей.
Проект передаёт значение только после проверки доступа. Framework сверяет область, происхождение, ревизию и отпечаток. Отказ доступа — ошибка, а не отсутствующее значение, и частичный Document при этом не создаётся.