假设我在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
到目前为止一直这么好......我们可以根据Mongo中的数据在Spring中实际设置。但是,将我的蓝色资源更改为301重定向到我的新橙色资源的最佳RESTful请求是什么?应该是......
PUT /resource/blue
{"movedto" : "/resource/orange"}
或
DELETE /resource/blue
{"movedto" : "/resource/orange"}
还是其他什么?
答案 0 :(得分:2)
这看起来真的像PUT
,因为你正在更新资源(它的位置),移动它两次应该没有效果(你得到301
/ 303
) ,因为它已经存在了。
如果您在同一资源上使用DELETE
两次,则调用将尝试删除不再存在的资源(已被移动),因此它应该实际返回404
。
另外,by definition DELETE
动词:
除非在作出答复时,否则不应表示成功, 它打算删除资源或将其移动到无法访问的资源 位置。
您移动资源的位置不会无法访问。
答案 1 :(得分:0)
在这种情况下,您可以使用HTTP 303(请参阅其他)而不是HTTP 301(已移动)
响应
HTTP/1.1 303 See Other
Location: http://your.domain/resource/orange
希望这有帮助