一般来说,在 REST API 服务中,我们把哪些信息放到正文中,把什么放到标头上?
例如,我有更新用户的现有终结点。喜欢这个
POST
{
"user": {
"id": 1,
"name": "some name"
}
}
在以下情况下可以调用此终结点:
- 用户自己更新他的数据
- 用户呼叫客户服务和管理员会更改用户的此信息。
如果更新是由管理员完成的,我需要添加管理员用户 ID 来跟踪。为此,我看到了两种方式。
我将管理员的 ID 添加到合同中,如果它不为空,则表示是管理员进行更改。
POST { "user": { "id": 1, "name": "some name" }, "admin_id":"" }
正文保持不变,我将
X-admin-id
添加到 http 标头中。如果它不为空,则表示管理员进行了此更改。POST { "user": { "id": 1, "name": "some name" } }
是否有最佳实践,或者我可以同时使用这两种方式?
我知道这是一个老问题,用户可能不需要答案。这是我的想法。
我们不应该把admin_id放在请求的正文中。所以我更愿意遵循第二种方法。所以我们只需要检查X-admin-ID是否可用。如果可用,则管理员用户代表用户执行操作,否则用户自己执行此操作。我还希望在 Filter 类而不是资源终结点中执行此检查。