Вопрос по resource-id, identifier, rest – REST числовые или строковые идентификаторы ресурсов?

5

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

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

/users/1

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

/users/RSmith

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

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

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

Ваш Ответ

2   ответа
1

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

4

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

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

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

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

Похожие вопросы