REST числовые или строковые идентификаторы ресурсов?

Я провожу некоторые исследования, чтобы помочь мне разработать REST API, и это одна из тем, которые я не видел, где-либо подробно обсуждался.

Если у меня есть пользователь в системе, лучше ли идентифицировать пользователя с помощью числового идентификатора

/users/1

Или используя строковый идентификатор?

/users/RSmith

Я вижу гипотетические потенциальные плюсы и минусы каждого подхода, строковые идентификаторы более удобочитаемы, менее обнаружимы (не могут быть увеличены для поиска действительных пользователей) и не требуют сохранения другого числового идентификатора в базе данных (я бы не стал) хотите выставить идентификаторы базы данных через API). Числовые идентификаторы не имеют внутреннего значения и поэтому могут быть гарантированно неизменными, тогда как с помощью строкового идентификатора пользователь может захотеть переименовать ресурс, тем самым изменив URI ресурса.

Есть ли здесь передовая практика REST или лучший подход зависит от системы к системе? Если последнее, есть ли дополнительные плюсы и минусы, связанные с каждым методом?

 Sixto Saez05 июн. 2012 г., 21:45
Кажется, что это проблема приложения, потому что это та, которая должна использовать URI для действий. Вы определили несколько хороших предложений. кон & APOS; с. Любой из подходов дает действительный URI для идентификации ресурса, поэтому ваш бизнес / проблемы безопасности должны помочь вам в выборе. Что касается определения лучших практик REST, это отличный способ начать огненную войну, поскольку каждый, похоже, использует очень личные определения REST :)

Ответы на вопрос(2)

Решение Вопроса

Как известно, строго говоря, между этими двумя подходами нет преимуществ. Да, идентификаторы строк могут быть проще для запоминания, но, кроме того, REST не применяет "довольно" URL-адреса (или идентификаторы), потому что большую часть времени URL-адреса доступны для программ, следующих по гиперссылкам.

Таким образом, удобные для пользователя URL-адреса должны использоваться только для начальной загрузки ресурсов, которые могут запомнить люди. Кроме того, угадывание идентификатора не должно быть проблемой, потому что либо:

You have to restrict access to URLs based on any authentication method, or: You have to use randomized/unguessable URLs that are not "public".

Так какой из них использовать? В большинстве случаев это не имеет значения, поскольку идентификаторы не доступны напрямую. Если вам необходимо убедиться, что люди по какой-то причине запоминают свои URL-адреса, постарайтесь сделать их удобными для человека, но старайтесь избегать изменения имени ресурса и применяйте некоторые другие средства аутентификации, чтобы даже предполагаемые URL-адреса не получали доступа к несанкционированным местам.

/ users / RSmith состоит в том, что он более дружественный для человека. С точки зрения RESTfull это не имеет значения, поскольку оба являются допустимыми идентификаторами ресурса. Все остальное зависит от требований вашей системы.

Ваш ответ на вопрос