Конечные точки REST для текущего пользователя против ID

91
13

Что касается API REST, то какая из них лучше всего подходит?

Предположим, что GET/PUT/POST/DELETE для всех ресурсов.

1) Использовать в настоящее время подписанный пользователь для /users/**/* маршрутов.

/users
/users/password
/users/email
/users/preferences
/users/documents
/documents/:id

2) Наличие абсолютных путей с идентификаторами и использование /users/:id для текущего пользователя, подписанного пользователем?

/users
/users/:id/password
/users/:id/email
/users/:id/preferences
/preferences/:id

Это имеет значение?

спросил(а) 2018-05-11T06:02:00+03:00 2 года, 4 месяца назад
1
Решение
57

Оба прекрасны. Что приятно создавать уникальные конечные точки для каждого пользователя, так это то, что в один прекрасный день вы можете позволить пользователю X получить доступ к информации о пользователе Y.

Образец, который я использовал в недавнем API, заключался в создании уникальной конечной точки для каждого пользователя, но 1 конечной точки /current-user которая перенаправляет на /user/:some-id.

URL может указывать на личность. Очень важно, что другие ресурсы могут относиться к пользователю как к "создателю" или "модификатору" sommething, и в тех местах, где вы, возможно, захотите использовать URL-адрес (а не только userId).

ответил(а) 2018-05-11T08:47:00+03:00 2 года, 4 месяца назад
57

Если ресурс, на который вы ссылаетесь, может быть несколько, вы должны пойти с

/resource/resource_id

В приведенном выше случае пользователь может быть только текущим человеком, поэтому использование шаблона, например /users/user_id, звучит странно. Потому что вам придется обрабатывать различные случаи, например What What, если зарегистрированный пользователь USER A запускает вызов api с другим идентификатором пользователя USER B??

У вас может быть пространство имен, например /profile для управления электронной почтой, именем, изображением и т.д. Вам не нужно делать это как /users/profile поскольку он неявный, что данные будут обрабатываться/доступны для текущего входа в систему пользователь.

ответил(а) 2018-05-11T08:52:00+03:00 2 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема