Для сайта, над которым я работаю, мы улучшаем наши URL-адреса для одного типа ресурсов - в частности, отступая от числовых идентификаторов к уникальным описательным строкам. Аналогичным примером может быть переход от идентификации пользователей по числовому идентификатору базы данных для идентификации их по имени пользователя (а не в нашем конкретном случае, но аналоговом). Таким образом, URL, чтобы получить доступ к информации пользователя, используемый выглядеть следующим образом:REST - поддержка нескольких возможных идентификаторов
/users/48573
И теперь, похоже,
/users/thisisausername.
Единственная проблема заключается в том, что нам все еще нужно, чтобы иметь возможность получать их через численные идентификаторы как-то , для устаревших потребителей API. Нам не нужны сами URL-адреса REST для перенаправления (например, /users/48573
не следует перенаправлять на /users/thisisausername
), нам просто нужен метод для получения правильных данных с использованием старого идентификатора. Решение должно либо предоставить альтернативный способ доступа к информации пользователя (который удобно включает в себя новый идентификатор, имя пользователя) по идентификатору, либо получить доступ только к имени пользователя по идентификатору. Возможными решениями могут быть:
- Использование узла для указания некоторого альтернативного способа идентификации, например.
/users/byid/48573
- Использование параметра запроса для указания некоторого альтернативного способа идентификации, например.
/users/48573?fetchby=id
или/users/48573?byid=true
- Рассмотрение имени пользователя по-одному в качестве другого ресурса, например.
/identifiers/username/48573
Какой из них (если есть) является самым близким к надлежащему REST? Как бы вы справились с этой проблемой?
Я кончался осуществление доступа через полей неглавный-идентификатор в качестве поиска. Это решение позволяет извлекать несколько типов ресурсов через несколько полей, сохраняя при этом только один в качестве основного идентификатора. Для согласованности списки API поиска «поиск». Таким образом, официальный способ доступа пользователя является: /пользователя/thisisausername и доступ ID, мы имеем: /пользователей идентификатора = 48573 Аналогично, мы могли бы поиск по целому ряду различных областей , как в: /users? firstName = Kelly Вдохновение было: http://jwyseur.blogspot.com/2008/12/uri-design-for-rest.html (см. «поиск ресурса») –
Итак, вы набросились на кеширование? У меня такая же проблема, как у вас, но не могу решить проблему с помощью параметров запроса, которые устраняют одно из основных преимуществ REST API. Мне нравится ваше первое рекламное предложение ... – HDave