Правильный способ проектирования конечных точек

Я проектирую ОТДЫХ. У меня есть пользователь, и у пользователя есть контакты разных типов. Какими должны быть мои конечные точки в соответствии с REST?

Это выглядит разумно:

GET /users/:id/contacts
GET /contacts

На конечной точке пользователей я проверяю контакты для другого пользователя, а на конечной точке контактов проверяю зарегистрированного пользователя в контактах, но затем, если мне нужно получить все контакты для всех пользователей, мне нужно сделать фильтр:

GET /contacts?user_id=:id

И заставить эту конечную точку вернуть все контакты. И это делает конечную точку для пользователей избыточной.

Как правильно сделать это в соответствии с REST?

1 ответ

Решение

Какими должны быть мои конечные точки в соответствии с REST? [...] Как правильно сделать это в соответствии с REST?

Это ошибочное мнение.

Архитектура REST не поддерживает какой-либо дизайн URI (см. Примечания ниже). Это полностью зависит от вас, чтобы выбрать URI, которые лучше идентифицируют ваши ресурсы.


Синтаксис URI определен в RFC 3986. Как правило, путь организован в иерархической форме (сегменты разделены /) и может содержать неиерархические данные в компоненте запроса (начиная с ?).

Так /users/{id}/contacts Кажется, это просто хорошо, чтобы идентифицировать коллекцию контактов, которая принадлежит конкретному пользователю.


Примечание 1: Архитектурный стиль REST описан в главе 5 диссертации Роя Т. Филдинга и определяет набор ограничений, которым должны следовать приложения, которые следуют такой архитектуре. Однако это ничего не говорит о том, какими должны быть URI.

Примечание 2: Примеры популярной статьи, написанной Мартином Фаулером, объясняющей модель, определенную Леонардом Ричардсоном, предлагают структуру URI, которая выглядит дружественной и легкой для чтения.

Другие вопросы по тегам