在设计API时,我们遇到了一个问题,即PUT有效负载是否应包含要更新的资源的ID。
这是我们目前拥有的:
PUT /users/123 Payload: {name: "Adrian"}
我们的路由代码从URI中提取ID,然后继续进行更新。
API的第一批用户在质疑为什么我们在有效负载中不允许使用ID:
PUT /users/123 Payload: {id: 123, name: "Adrian"}
我们不允许这样做的原因是因为ID在有效负载和URI中重复。
再考虑一下,我们正在将资源耦合到URI。
如果URI没有ID,则需要修改有效负载:
PUT /no/id/here Payload: {name: "Adrian"} < What user???
有什么理由不这样做吗?
/users
(没有添加“新”)没有问题。