MongoDB中正确的PUT实现和ObjectID

MongoDB中正确的PUT实现和ObjectID,mongodb,rest,Mongodb,Rest,我想使用MongoDB的ObjectID来识别RESTful调用中的资源。然而,我很难弄清楚如何正确地构造PUT调用 据我所知,正确的PUT调用路径应该包括要修改的资源的ID。如果具有该ID的资源存在,则对其进行修改;如果它不存在,则创建它。后一种情况就是我遇到的问题:发出PUT请求的客户机不知道MongoDB将生成的ID,因此它不能将该ID用作请求的一部分 我想,当使用自动生成的键作为资源ID时,这是一个相当常见的场景,但是我还没有找到一个关于如何正确处理它的解释。我可以放弃使用objecti

我想使用MongoDB的ObjectID来识别RESTful调用中的资源。然而,我很难弄清楚如何正确地构造PUT调用

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

我想,当使用自动生成的键作为资源ID时,这是一个相当常见的场景,但是我还没有找到一个关于如何正确处理它的解释。我可以放弃使用objectid的想法,在文档中使用一些其他值,但对于某些类型的集合来说,这并不管用。其他人是怎么做的?

“如果资源不存在,那么就创建它”是不必要的。如果资源是通过名称而不是像AmazonS3那样的id来标识的,那么这就很好了。因此,在您的情况下,PUT仅用于修改。必须使用用于创建POST的

表示如果URI被定义为以这种方式使用,服务器可以创建新资源


因此,如果您通过(例如)发布到集合URI来创建新资源,您可以使用inknown ID返回PUT的错误响应。

到目前为止,这两个响应基本相同,但由于链接到RFC,我将此响应标记为正确。谢谢