[英]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.