如何处理REST更新中PUT主体和URI之间的不匹配?

时间:2015-01-05 20:19:53

标签: web-services rest http

如果PUT请求发送到http://foo.com/api/employees/123这样的URI,其中'123'是员工ID,但邮件正文如下所示:

{
  "id" : 444,
  "firstname" : "John",
  "lastname" : "Doe"
}

服务应如何处理?

是否期望将员工'123'更新为员工'444'(实际上移动资源)或者是否应该返回HTTP错误响应(如果是,那应该是什么? )

2 个答案:

答案 0 :(得分:1)

我认为应该使用URI中的id,并且消息体中不存在id。你在这里有重复的提示。

您在PUT方法中提供的内容包含您要更新的数据,而不是标识符的情况。

以下是我如何调整您的电话:

PUT http://foo.com/api/employees/123
(some headers like Content-Type: application/json)
{
  "firstname" : "John",
  "lastname" : "Doe"
}

也许这个链接可以帮助您:http://templth.wordpress.com/2014/12/15/designing-a-web-api/

希望它有所帮助。 亨利

答案 1 :(得分:0)

您可以根据要对put资源执行的操作使用此Id。通常,资源uri中的id用于从持久性db获取id。您可以通过uri id获取项目,然后您可以将此ID设置为正文,但这将是奇怪的!