"GET / users? Username = joe & password = topsecret", но это исказит официальную цель запроса GET. "
Нет, это ничего не извращает. Это абсолютно правильный и RESTful способ сделать это, и это рекомендуемый способ получения динамических результатов в спецификации http. REST не заботится о том, что в URL, только то, что он уникален. URL-адрес этой страницы может быть http://3f778a9b8a7c778696e для всех задач архитектуры REST, если это единственный способ добраться до него, и он никогда не приведет ни к чему другому.
http определяет протокол строки запроса для возврата динамических результатов. Учитывая текущее состояние вашей базы данных, строка запроса, которую вы предоставляете вашему приложению, должна всегда возвращать один и тот же результат. Тогда это будет RESTFUL. Эстетика URL - это совсем другая проблема, чем REST.
в соответствии с архитектурой REST, правила запроса GET заключаются в том, что он всегда возвращает одни и те же результаты (или поддерживает одни и те же результаты в течение достаточно продолжительных периодов времени, так что кэширование работает), и что GET не имеет побочных эффектов. последствия. GET должен быть идемпотентом (всегда возвращать одни и те же результаты, независимо от того, сколько раз вы его называете) и не заставлять систему менять состояние. То есть это .
Конечно, вам не нужно использовать протокол запроса. Вы можете поместить параметры в прямую косую черту, между точками с запятой, или это может быть GUID в кодировке base64. Это зависит только от вас, если вы следуете этим простым правилам.