假设我在 RESTful API 中有两个对象:
/resource/blue
/resource/red
现在我想将它们结合起来并将它们指向一个新对象
/resource/orange
当我转到/resource/blue 或 red 时,我希望收到类似
HTTP/1.1 301 Moved Permanently
Date: Thu, 10 Mar 2016 21:57:47 GMT
Location: /resource/orange
目前为止,一切都好。。。我们可以在 Spring 中根据 Mongo 中的数据务实地设置它。但是,将我的蓝色资源更改为 301 重定向到我的新橙色资源的最佳 RESTful 请求是什么? 应该是...
PUT /resource/blue
{"movedto" : "/resource/orange"}
或
DELETE /resource/blue
{"movedto" : "/resource/orange"}
还是别的什么?
看起来真的像一个PUT
,因为您正在更新资源(它的位置),并且移动它两次应该没有效果(您得到301
/303
),因为它已经存在。
如果在同一资源上使用两次DELETE
,则调用将尝试删除不再存在的资源(它已被移动),因此它实际上应该返回一个404
。
此外,根据定义,DELETE
动词:
不应表示成功,除非在给出答复时, 它打算删除资源或将其移动到无法访问的资源 位置。
而且您移动资源的位置不会无法访问。
您可以使用HTTP 303(请参阅其他)而不是HTTP 301(已移动)
响应
HTTP/1.1 303 See Other
Location: http://your.domain/resource/orange
希望这有帮助