Как ты это делаешь для
межсистемные интерфейсы? Скажи
клиент хочет создать заказ в
сервер на http://my.server.org Как это
он должен был узнать, что для создания
заказ должен использовать URL
http://my.server.org/newOrder и нет
http://my.server.org/nO или что-нибудь
еще
Это не учится. Машинные клиенты, как правило, не могут «учиться». По крайней мере, пока, мы все еще пре-Скайнет. Вы должны "учить" их.
Но главное в том, что вы не учите их URL-адресам. Вы учите их отношениям.
Рассмотрим в HTML ...
<a rel="order" href="http://my.server.org/newOrder"/>
и
<a rel="order" href="http://my.server.org/nO"/>
Вы заметите, что rel - это то же самое, "order", но URL - нет.
В «идеальном» мире ваша система будет иметь единую точку входа, скажем, http://my.server.org/, и оттуда клиент сможет найти все необходимые им сведения.
На практике многие системы имеют несколько «хорошо известных» и определенных точек входа, с которых клиент может начать, так же, как целесообразность, чтобы клиенту не всегда приходилось начинать с корня системы. Эти хорошо известные точки входа предполагают, что провайдер не будет менять эти URL в ближайшее время. Что они долгоживущие, и сервер их очень хорошо поддержит.
Но, пройдя точку входа, любой найденный вами URL, скорее всего, не имеет такого обещания. URL может быть только одноразовым. Он может быть направлен на разные машины, скажем, для балансировки нагрузки. Кто знает. Но, как потребитель сервиса, вас действительно не волнует, что такое URL, вам важны только отношения. Отношение сообщает вам подробности URL для использования.
В документации вашего гипермедиа API объясняется, как применять унифицированный интерфейс к каждой из версий, с которыми столкнется ваш клиент. Клиент также не может «интуитивно» это понять, этому нужно учить.
По сути, обучая клиента тому, как ориентироваться в отношениях, которые он будет или МОЖЕТ найти в полезных нагрузках, которые он обрабатывает, клиент манипулирует гипермедиа API. Полезные данные содержат подписанные сообщения, чтобы показать путь, но сервер определяет, куда отправляются эти подписывающие сообщения.
Что касается того, как часто оно используется, в мире машин и машин, скорее всего, не очень. Большинство систем недостаточно велики, когда URL-адреса меняются настолько, чтобы иметь значение, а клиентов так мало, что смена клиентов не является существенным бременем. Так что большинство просто жесткий код прочь.
Но тогда, в конце концов, у вас просто плохие клиенты. Ничто из системы REST не может сделать с плохим клиентом. Во всяком случае, они не могут отличить их во время выполнения.