想象一下,我们有一个REST服务,它有一个包含密码(或其他一些敏感信息)的资源。一旦设置了密码,我们永远不想通过API返回它(在设置之后,只有一些外部系统会使用它,我们可能只存储密码的哈希值等)。
所以我们有一个PUT / POST请求,它在一个带有密码的资源中发送。 GET请求应该返回什么?我可以想到几个可能的解决方案:
GET可以返回相同的资源,但没有密码字段(感觉 奇怪,因为密码是PUT / POST的有效字段,所以为什么不呢 GET)
GET可以返回资源,但密码字段为空或 设置为某个任意值。
从资源中删除密码,并拥有子资源。 例如资源/密码,我们可以输入密码,但不允许GET请求。
这似乎是一个相当普遍的问题,但我似乎找不到一个好的,标准的解决方法。大多数搜索结果都指向访问API的用户的实际密码,并重置这些密码,这不是这里的情况。有没有共同的,完善的方法来处理这种情况?
答案 0 :(得分:0)
您可以POST
/ PUT
数据,而不是在回复或GET
中将其返回。
我的选择是#1返回没有字段的资源。
也可以使用#2并对该字段进行模糊处理。