Имейте в виду, что REST не заботится о том, какие соглашения об орфографии вы используете для своих идентификаторов.Либо два URI одинаковы, и в этом случае клиент будет предполагать, что они ссылаются на один и тот же ресурс, либо два URI будут разными, и в этом случае клиент будет предполагать, что они ссылаются на разные ресурсы.
/users/{id}
/users/{code}
В этом случае кажется, что ваша проблема заключается в попытке определить, какой ресурс предназначен, когда полученное вами число неоднозначно.
Поскольку целое число неоднозначно, вам нужно провести различие в URI в другом месте.REST не особенно заботится о том, как вы это делаете, если только идентификаторы соответствуют RFC 3986 .
/ebc8a29b-76a5-4f40-b37a-2d40eab9283d/{id}
/9193590d-fc47-4107-a160-e344b9cedb5c/{code}
Это вполне удовлетворительное решение в отношении REST.
/usersById/{id}
/usersByCode/{code}
Это также вполне удовлетворительно и, возможно, более легко употребляется людьми.
/users/id={id}
/users/code={code}
Еще один удовлетворительный пример;который дает вам удобочитаемость и общий сегмент пути /users
, что может быть удобно, если вы хотите, чтобы относительные ссылки были встроены в представление.
Параметры матрицы - это часто используемый термин, который охватывает числоразличных способов встраивания информации в сегмент пути;есть разумная надежда на то, что если вы используете стандартную / стороннюю библиотеку для анализа вашего URI, то некоторые или все эти соглашения будут поддерживаться.