【发布时间】:2014-10-24 13:03:28
【问题描述】:
假设我在 REST API 中有一个简单的“员工”资源:
{
"employee_id": "1234ABCD",
"name": "John Doe",
"title": "Developer",
"salary": 50000
}
员工和经理都有权读取整个资源。经理有权更新所有资源的属性,但员工只有更新name 属性的权限。
API 支持通过 PATCH 或 POST 或其他方式(对问题不重要)对资源进行部分更新。如果员工尝试更新salary(他无权这样做),那么适当的响应是什么?我看到了一些选项,但我不确定最合理的方法是什么:
忽略更新中他无权修改的任何字段并返回 200 响应。 这似乎不太正确,因为 API 说“好的,我做到了”,而实际上它并没有更新它被告知要更新的所有内容。
以 403 禁止响应。 这似乎不太正确,因为员工确实有权修改资源,而不是他试图修改的所有字段。
响应 400 错误请求。 这似乎不太正确,因为请求实际上并不坏,只是对这个用户“不好”。
其他一些我没有考虑过的回应?
在这种情况下最好的反应是什么?
【问题讨论】:
标签: api rest permissions