Комментарии 8
Почему бы тогда не оставить лишь урлы вида https://domain.test/3f0fd552-e564-42ed-86b6-a8e3055e2763
и не парить ни клиента, ни сервера редиректами, разными типами ссылок, сменой формата ссылок и прочей ерундой? Получили гуид, нашли запись в базе, узнали её тип, вызвали нужный обработчик.
Тут опять же накладывается ограничение на структуру адреса, которую потом нельзя будет изменить.
В реляционной БД для этого придется держать отдельную таблицу со всеми GUID'ами сущностей?
Или сменить субд, на графовую.
Тут опять же накладывается ограничение на структуру адреса, которую потом нельзя будет изменить.
И зачем его менять? Там только гуид и всё.
Более того, структура URL-ов может измениться без ведома клиента, HATEOAS это позволяет
Не совсем. В REST (уровнем ниже) URL не может поменяться когда разработчику захотелось. Время жизни URL совпадает со временем жизни ресурса. Если вы пошли смотреть книжку, а URL вернул 404, значит книжки больше нет (семантически). Не сервер ушел, не разработчик передумал, а книжка — пффф — и исчезла. Ссылка отражает состояние и наоборот. Объяснить клиенту что "ну ты на URL не смотри, вообще-то ничего не поменялось" в рамках принципов REST нельзя никак.
Ну как же! А может редирект вернуть? Можно, но не стоит. Формально семантика редиректа — "мы переехали". Это костыль уровня протокола. Который, кстати, уже много раз засовывали куда не следует вроде авторизации и трекинга. Предполагаемое поведение клиента — повторить запрос по новому адресу и все. Для браузера это норм (у него время жизни страницы ограничено чем-то разумным), а вот для API — не годится: что клиенту дальше делать с ответом (в котором могут быть ссылки на другие ресурсы) — вообще говоря не определено. Например — автор редиректнутой книжки — это тот же самый автор или другой? Адрес другой, значит и автор другой? Или автор тот же самый, потому что адреса совпали с точностью до суффикса? Давайте разбирать URL и искать в нем уникальные идентификаторы на клиенте? Или вытащим ресурс "автор" и посмотрим на контент? Нет.
А как быть если мы накосячили, или внезапно решили что схема URL больше не отражает прекрасное? На этот случай в HATEOAS есть целое метафизическое болото про версионирование — приятного чтения, дружок, надеюсь тебе нравятся шутки про "ложки нет, а суслик есть".
TLDR: "постоянные ссылки которые могут измениться" могут измениться только через изменение версии схемы URL, а это решается версиями.
Проблема глубинных ссылок в HATEOAS