2017-02-22 22 views
0

Был найден 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?

+0

Возможный дубликат [REST API DESIGN - Получение ресурса через REST с разными параметрами, но с тем же шаблоном URL-адреса] (http://stackoverflow.com/questions/20381976/rest-api-design-getting-a-resource-through -отдые-с-различные-параметры-но) – vtortola

ответ

0

/rest/user/[email protected], слэш '/', используемый для представления отношения уровня, например./rest/customer/orders/order1, клиент имеет заказы, заказы имеют заказ с именем order1.