В собственных словах Роя Филдинга (4-й пункт в статье):
REST API не должен определять фиксированные имена ресурсов или иерархии (очевидная связь клиента и сервера). Серверы должны иметь свободу управления своим собственным пространством имен. Вместо этого позволяет серверам инструктировать клиентов о том, как создавать соответствующие URI, как это делается в формах HTML и шаблонах URI, , определяя эти инструкции в типах мультимедиа и отношениях ссылок.
Другими словами, до тех пор, пока клиенты не получат фрагменты, необходимые им для генерации URI во внеполосной информации, HATEAOS не нарушается.
Обратите внимание, что шаблоны URI также можно использовать в URI без строк запроса:
http://example.com/dictionary/{term}
Таким образом, вопрос больше в том, является ли RESTful разрешить клиенту создавать URL-адреса, чем в том, является ли RESTful использованием строк запроса.
Обратите внимание, что объем информации, передаваемой клиенту в приведенном выше примере, в точности эквивалентен обслуживанию полного списка всех возможных терминов, но намного эффективнее с точки зрения пропускной способности.
Это также позволяет клиенту искать в словаре, соблюдая HATEAOS, что было бы невозможно без внутриполосных инструкций. Я совершенно уверен, что Рой Филдинг не продвигает Интернет без какой-либо функции поиска ...
Что касается вашего третьего комментария, я думаю, что Рой Филдинг поощряет разработчиков API иметь "прозрачные" URI как дополнительную функцию поверх HATEAOS . Я не интерпретирую его цитату в ответе zoul как утверждение, что клиенты будут использовать «здравый смысл» для навигации по API с ясными URI. Они по-прежнему будут использовать внутриполосные инструкции (например, формы и шаблоны URI). Но это не означает, что прозрачные URI не лучше, чем темные, удивительные, непрозрачные URI.
Фактически, прозрачные URI обеспечивают дополнительную ценность для API (отладка - один из случаев использования, о котором я могу думать, когда наличие прозрачных URI неоценимо).
Для получения дополнительной информации о шаблонах URI , вы можете взглянуть на RFC6570 .