REST API design - ПОЛУЧИТЕ всех пользователей, как обращаться с частной информацией? - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над REST API и немного теряюсь в голове.У меня есть Модель для пользователей, и я храню (соленые) пароли в базе данных.

Рассмотрим потребителя API: я бы хотел, чтобы они могли получать общедоступную информацию для всех других пользователей (GET / users, / users /: id), но я бы хотел, чтобы пароли были опущены.

Однако, если, например, я хочу обновить информацию о зарегистрированном пользователе в обычном запросе PUT, у меня не будет существующего пароля пользователя для отправки в запросе PUT - так что запрос PUT будет выполнять толькочастичное обновление пользователя по всем другим его полям.Это не очень приятно.(Может быть, я должен использовать PATCH? Кажется, патч не используется широко. Есть ли причина для этого?)

Сейчас я думаю о POST at /users/:id/updatePassword для обновления паролей, а затем PUT at /users/:id обновить все остальное о пользователе, КРОМЕ пароля, и нет способа получить пароль пользователя из API.

Однако для меня это кажется .... странным.Может быть, это не так, но просто интересно, есть ли у кого-нибудь лучшие идеи, как спроектировать это?

Спасибо

1 Ответ

0 голосов
/ 28 мая 2018

Прежде всего, вы не должны хранить пароль пользователя в зашифрованном виде.Вы должны засолить и хэшировать их и хранить хэш соленого пароля.

Модель базы данных вашего пользователя не должна соответствовать ресурсу, который вы предоставляете пользователю в своем REST API.Когда вы используете PUT для обновления пользователя, вы должны ожидать, что все поля в ресурсе, как PUT, являются идемпотентными.

Способ, которым вы предлагаете обновить пароль (использование POST /users/:id/updatePassword совершенно нормально и RESTfulВ вашей модели базы данных вы можете комбинировать хэш пароля с другими полями пользователя, но в своем ресурсе вы храните их отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...