- адреса приложения переехали в своё пространство `/app/`, опрос готовности убран целиком: рубеж и причину остановки владелец узнаёт карточкой записи, текст — отдельным адресом названного вида - заведена единая точка отображения доменной ошибки и слой, приводящий к той же форме отказы библиотеки: тело несёт машиночитаемый код рядом с сообщением - у записи появились имя файла отправителя, длительность и размер своими колонками, а у ленты владельца — свой индекс: без него страница сканировала весь архив сервиса
40 lines
2.9 KiB
Markdown
40 lines
2.9 KiB
Markdown
# Приложение живёт своим пространством адресов, а не общим с хранилищем
|
||
|
||
- **Дата:** 2026-08-15
|
||
- **Источник:** openspec/changes/archive/2026-08-15-app-json-contract/design.md,
|
||
раздел «Переезд в `/app/`, а слой сессии — на корень»
|
||
|
||
## Решение
|
||
|
||
Все адреса приложения переехали из `/api/` в собственный корень `/app/`, а слой
|
||
предъявления сессии повешен на **группу корня**, а не на перечень адресов.
|
||
|
||
## Почему
|
||
|
||
Пространство `/api/` принадлежит хранилищу: оно вешает туда собственные наборы
|
||
адресов, и поменять этот префикс нельзя — он литерал библиотеки, а не настройка.
|
||
Свободных имён сегодня хватает, но соседство остаётся: обновление библиотеки
|
||
вправе занять новое имя рядом с нашим, и разойдутся они молча — тем же адресом
|
||
начнёт отвечать не тот обработчик.
|
||
|
||
Прецедент в проекте уже принят тем же доводом: адреса входа вынесены на `/auth/*`
|
||
решением от 2026-08-12.
|
||
|
||
Слой на корень, а не на перечень: «перечень рос бы с каждым новым адресом
|
||
приложения, и забытый в нём адрес молча перестал бы принимать куку».
|
||
|
||
## Последствия
|
||
|
||
- `+` соседство с чужими адресами кончилось: имя, занятое библиотекой, наших
|
||
адресов больше не задевает;
|
||
- `+` новый адрес приложения получает слой предъявления по построению, а не по
|
||
памяти того, кто его добавил;
|
||
- `−` правило неизвестного пути перечисляет теперь четыре корня сервиса вместо
|
||
одного: `/api/`, `/app/`, `/auth/` и `/_/`;
|
||
- `−` ограничитель частоты хранилища, настроенный на его собственный корень,
|
||
наших адресов не покрывает — своё правило заводится нами, и его включение
|
||
вводит в действие заодно умолчательные правила хранилища;
|
||
- `−` ломка полная: прежние адреса приёма и опроса отвечают `404`. Оплачено
|
||
стадией — на сервере данных нет, внешней программы на прежнем контракте не
|
||
существует.
|