REST числовые или строковые идентификаторы ресурсов?
Я провожу некоторые исследования, чтобы помочь мне разработать REST API, и это одна из тем, которые я не видел, где-либо подробно обсуждался.
Если у меня есть пользователь в системе, лучше ли идентифицировать пользователя с помощью числового идентификатора
/users/1
Или используя строковый идентификатор?
/users/RSmith
Я вижу гипотетические потенциальные плюсы и минусы каждого подхода, строковые идентификаторы более удобочитаемы, менее обнаружимы (не могут быть увеличены для поиска действительных пользователей) и не требуют сохранения другого числового идентификатора в базе данных (я бы не стал) хотите выставить идентификаторы базы данных через API). Числовые идентификаторы не имеют внутреннего значения и поэтому могут быть гарантированно неизменными, тогда как с помощью строкового идентификатора пользователь может захотеть переименовать ресурс, тем самым изменив URI ресурса.
Есть ли здесь передовая практика REST или лучший подход зависит от системы к системе? Если последнее, есть ли дополнительные плюсы и минусы, связанные с каждым методом?