如何处理 REST 更新中 PUT 正文和 URI 之间的不匹配?
How to handle a mismatch between the PUT body and URI in a REST update?
如果 PUT
请求发送到 URI,例如 http://foo.com/api/employees/123
,其中“123”是员工 ID,但消息正文如下所示:
{
"id" : 444,
"firstname" : "John",
"lastname" : "Doe"
}
服务应该如何处理?
是希望将员工“123”更新为员工“444”(有效地移动资源)还是应该return一个 HTTP 错误响应(如果是,应该是什么?)
您可以根据要对 put 资源执行的操作来使用此 ID。通常,资源 uri 中的 id 用于从持久性数据库中按 id 获取项目。你可以通过 uri id 获取项目然后你可以将这个 id 设置到正文中,但这会很奇怪!
我认为应该使用 URI 中的 ID,并且消息正文中没有 ID。您在这里有重复的提示。
您在 PUT 方法中提供的内容包含您要更新的数据,而不是标识符的情况。
以下是我将如何调整你的电话:
PUT http://foo.com/api/employees/123
(some headers like Content-Type: application/json)
{
"firstname" : "John",
"lastname" : "Doe"
}
也许这个 link 可以帮助你:http://templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望对您有所帮助。
蒂埃里
如果 PUT
请求发送到 URI,例如 http://foo.com/api/employees/123
,其中“123”是员工 ID,但消息正文如下所示:
{
"id" : 444,
"firstname" : "John",
"lastname" : "Doe"
}
服务应该如何处理?
是希望将员工“123”更新为员工“444”(有效地移动资源)还是应该return一个 HTTP 错误响应(如果是,应该是什么?)
您可以根据要对 put 资源执行的操作来使用此 ID。通常,资源 uri 中的 id 用于从持久性数据库中按 id 获取项目。你可以通过 uri id 获取项目然后你可以将这个 id 设置到正文中,但这会很奇怪!
我认为应该使用 URI 中的 ID,并且消息正文中没有 ID。您在这里有重复的提示。
您在 PUT 方法中提供的内容包含您要更新的数据,而不是标识符的情况。
以下是我将如何调整你的电话:
PUT http://foo.com/api/employees/123
(some headers like Content-Type: application/json)
{
"firstname" : "John",
"lastname" : "Doe"
}
也许这个 link 可以帮助你:http://templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望对您有所帮助。 蒂埃里