0

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

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

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

4

2 回答 2

1

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

因此,如果您通过例如 POST 到集合 URI 创建新资源,您可以为具有未知 id 的 PUT 返回错误响应。

于 2013-05-10T23:08:40.417 回答
1

“如果资源不存在,则创建它”恕我直言,没有必要。如果资源是通过名称而不是像 amazon S3 这样的 id 来识别的,那就太好了。因此,在您的情况下,PUT 仅用于修改。必须使用创建 POST。

于 2013-05-10T22:50:39.723 回答