MongoDB中正确的PUT实现和ObjectID

时间:2013-05-10 20:47:20

标签: mongodb rest

我想使用MongoDB的ObjectID来识别RESTful调用中的资源。但是,我无法弄清楚如何正确构建PUT调用。

据我了解,正确的PUT调用路径应该包含要修改的资源的ID。如果存在具有该ID的资源,则将其修改;如果它不存在,则创建它。后一种情况是我遇到的问题:发出PUT请求的客户端不知道MongoDB将生成的ID,因此它不能将ID用作请求的一部分。

我认为使用自动生成的密钥作为资源ID时这是一种相当常见的情况,但我无法找到有关如何正确处理它的解释。我可以放弃使用ObjectID并在文档中使用其他值的想法,但这对某些类型的集合不起作用。其他人如何做到这一点?

2 个答案:

答案 0 :(得分:1)

“如果资源不存在则创建”是恕我直言,没必要。这很好,资源是通过名称而不是像亚马逊S3这样的ID来识别的。因此,在您的情况下,PUT仅用于修改。必须使用创建POST。

答案 1 :(得分:1)

RFC for HTTP/1.1表示如果URI被定义为以这种方式使用,则服务器可以创建新资源。

因此,如果您通过例如创建新资源发布到集合URI后,您可以返回带有墨水ID的PUT的错误响应。