Как перенести глубокие ссылки в SPA? - PullRequest
0 голосов
/ 01 августа 2020

Допустим, текущая ссылка:

https: // [сервер] / param1 / param2 / param3, где param3 представляет объект в системе. https: // [server] / area1 / area2 / 12345

Теперь предположим, что из-за проектного решения все сущности, которые являются param3, заменяются разными значениями. Итак: https: // [server] / area1 / area2 / 12345-abcde будет той же сущностью, но с новым идентификатором в системе.

Это делает недействительными все пользовательские закладки из-за использования NgRx RouteSerializer, который принимает param3 и утверждает это как состояние, но в конечном итоге с ошибочным маршрутом (12345) просто перенаправляется на маршрут по умолчанию.

Я подумал, может быть, вызов API внутри RouteSerializer для поиска устаревшего значения для получения новый идентификатор объекта, но это не сработает, потому что это асинхронный вызов, который разрешается только после того, как RouteSerializer.serialize () уже вернул.

Более важный вопрос заключается в том, как вы переносите глубокие ссылки, когда объект Значение ID меняется вот так? Возможно ли это вообще?

1 Ответ

0 голосов
/ 01 августа 2020

настройте новый API и установите его версию, чтобы старые маршруты были установлены по умолчанию, а все новые схемы, продвигающиеся вперед, получали префикс с ключом версии или, возможно, использовали заголовки для установки / определения версии.

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

Вы также можете создать список перезаписей, который захватит старые подписи и перезапишет их в новую схему

...