簡體   English   中英

REST API設計-獲取所有用戶,如何處理私人信息?

[英]REST API design - GET all users, how to handle private info?

我正在使用REST API,但有點不知所措。 我有一個“用戶模型”,並將(加鹽的)密碼存儲在數據庫中。

考慮一下API的使用者:我希望他們能夠使所有其他用戶獲得公共信息(GET / users,/ users /:id),但是我希望密碼被忽略。

但是,例如,如果我想在常規的PUT請求中更新已登錄用戶的信息,那么我將沒有用戶的現有密碼可發送到PUT請求中-因此,PUT請求只會對用戶進行部分更新在所有其他領域。 這似乎不是很RESTful的。 (也許我應該使用PATCH?似乎patch沒有得到廣泛使用。是否有原因?)

現在,我正在考慮POST at /users/:id/updatePassword進行POST at /users/:id/updatePassword來更新密碼,然后PUT at /users/:id進行PUT at /users/:id來更新有關用戶的所有其他信息(除了密碼之外),並且無法檢索用戶密碼從API。

但是對我來說,這感覺很奇怪。 也許不是,但是只是想知道是否有人對如何設計這個有更好的想法?

謝謝

首先,您不應將用戶密碼加密存儲。 您應該對它們加鹽並對其進行哈希處理,並存儲鹽化密碼的哈希值。

用戶的數據庫模型不必與您在REST API中向用戶公開的資源相匹配。 當使用PUT更新用戶時,由於PUT是冪等的,因此應該期望資源中的所有字段。

您建議的更新密碼的方式(使用POST /users/:id/updatePassword完全正確且具有RESTful功能。在數據庫模型中,您可以將密碼哈希與用戶的其他字段結合使用,但是在您的資源中,您可以保留他們分開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM