Одна из основных практических проблем, связанных с тем, что «только один URL должен возвращать ресурс», связана с влиянием на кеши.
Если у вас есть два URL для одного и того же ресурса, вы можете получить две копии в кеше. Если вы сделаете PUT для одного из них, то кеш должен аннулировать оба, но он не знает об отношении между двумя копиями.
Что касается проблемы, в которой вы используете имя хоста, которое может разрешаться для разных потоков байтов, в зависимости от того, откуда вы обращаетесь к нему, я не считаю это проблемой вообще. Концептуально вы обращаетесь к одному и тому же ресурсу, на самом деле это просто другой экземпляр этого ресурса. Я широко использую это как форму механизма обнаружения. Я разрабатываю корпоративное приложение, которое размещается на сервере, который я называю «TMServer». Внутри организации существует только один экземпляр TMServer, и все ресурсы доступны с этого хоста. например http://TMServer/Suppliers У одного из моих других клиентов этот же URL-адрес разрешит совершенно другой набор поставщиков, но концептуально он все еще является "списком поставщиков".
Если бы один из моих клиентов попытался поделиться URL-адресом с другой компанией, тогда URL-адрес нужно было бы расширить до чего-то вроде http://TMServer.company.com/Suppliers.. Тогда он станет универсально уникальным URI.
Используя псевдоним DNS, я легко могу использовать свой файл .hosts для перенаправления, на которое указывает TMServer для тестирования, и, добавив запись на DNS-сервере, я могу сообщить о доступности службы всем пользователям в сети.