Как сгенерировать хороший идентификатор в документах ATOM?
-
02-07-2019 - |
Вопрос
Очевидно, что использование URL-адреса никуда не годится - почему это так, и как вы создаете хороший URL-адрес?
Решение
Статья Марка Пилигрима Как сделать хороший идентификатор в Atom это хорошо.Вот часть этого:
Почему вы не должны использовать свою постоянную ссылку в качестве идентификатора атома
Допустимо использовать ваш URL-адрес постоянной ссылки в качестве вашего <id>, но я не рекомендую это делать потому что это может создать путаницу в отношении какой элемент следует рассматривать как постоянную ссылку.Разработчики, которые не читают спецификации, посмотрят на ваш канал Atom и увидят две идентичные части информации, выберут одну и используют ее как постоянную ссылку, а некоторые из них выберут неправильно.Затем они переходят на другой канал, где два элемента не идентичны, и они путаются.
В Атоме, <link rel="alternate"> является всегда постоянной ссылкой на запись.<id> всегда является уникальным идентификатором для записи.Оба необходимы, но они служат разным целям.Идентификатор записи никогда не должен меняться, даже если изменится постоянная ссылка .
“Изменение постоянной ссылки”?Да, постоянные ссылки не так постоянны, как вы могли бы подумай.Вот пример, который произошел со мной.Мои URL-адреса постоянных ссылок были автоматически сгенерированы на основе заголовка из моей записи, но затем я обновил запись и изменил заголовок.Угадайте что, "постоянная” ссылка только что изменилась!Если вы умны, вы можете использовать HTTP-перенаправление для перенаправления посетителей со старой постоянной ссылки на новую (что я и сделал).Но вы не можете перенаправить ID.
Идентификатор записи Atom никогда не должен меняться!В идеале вы должны сгенерировать идентификатор записи один раз и сохранить его где-нибудь.Если вы автоматически генерируете его раз за разом из данных, которые меняются с течением времени, то идентификатор записи изменится, что противоречит цели .
Другие советы
Используйте GUID в качестве идентификатора.
зависит от того, какой язык вы используете, но вы могли бы использовать
Система.Guid для .NET.