Был найден couple из questions относительно дизайна URL-адреса RESTful для поиска ресурсов. Меня интересует URL-адрес RESTful для одного ресурса, отличного от идентификатора ресурса.RESTful URL-дизайн для поиска единственного ресурса
Например, у пользователя есть идентификатор и URL-адрес ресурса /rest/user/<id>
. Я хочу разрешить поиск одного пользователя по их адресу электронной почты (который гарантирует уникальность системы).
Альтернативы я придумал:
A) /rest/user/email/[email protected]
- создать отдельный ресурс для доступа к ресурсу индивидуального (хотя /rest/user/email
будет определен)
B) /rest/user/email:[email protected]
- здесь email:[email protected]
считается альтернативный идентификатор для пользователя, таким образом, это одна и та же конечная точка ресурса с использованием альтернативного идентификатора
C) /rest/[email protected]
- это поиск RESTful, но он будет повторять п массив, содержащий ноль или один записи, и, следовательно, не является прямой ссылки на ресурс
D) /rest/user/[email protected]
- подобный API поиска как (C), но с различной семантикой
Конструкция должна быть расширена до поиска с помощью различные уникальные идентификаторы, предоставляемые системой (внешний идентификатор, номер телефона, SSN и т. д.).
Я склоняюсь к варианту B, поскольку он определяет альтернативный способ ссылки на конкретного пользователя (который может использоваться глобально в службе) и повторно использует существующие конечные точки ресурсов. Это можно расширить до PUT и DELETE, а также GET. Но разве это очень RESTful?
Возможный дубликат [REST API DESIGN - Получение ресурса через REST с разными параметрами, но с тем же шаблоном URL-адреса] (http://stackoverflow.com/questions/20381976/rest-api-design-getting-a-resource-through -отдые-с-различные-параметры-но) – vtortola