POST以创建资源与在REST中创建新路径元素

时间:2011-08-14 06:19:36

标签: rest

我正在尝试在MongoDB数据库之上定义REST API,我应该可以在其中添加集合和文档。假设如下:

http://games.mydomain.com/database/characters/123

在MongoDB中,我会创建数据库,然后是字符集,最后是ironman文档(有一个_id 123)。上述记录将按以下方式创建:

    POST /database/characters/ HTTP/1.1
    Host: games.mydomain.com 
    Content-Type: application/json
    { "_id" : 123, "name" : "ironman" }

如果稍后我意识到我应该打破两个子集(即朋友和敌人)中的字符,我会在字符后创建它们(不要担心迁移部分):

    POST /database/characters/ HTTP/1.1
    Host: games.mydomain.com 
    Content-Type: application/json
    { "name" : "friends" }

和...

    POST /database/characters/ HTTP/1.1
    Host: games.mydomain.com 
    Content-Type: application/json
    { "name" : "foes" }

这就是问题所在:POST(集合和文档)看起来都一样!也就是说,在查看API时,开发人员如何区分彼此?在这种特殊情况下,编写API会不会“更好”(或更不明确)?:

创建集合:

    POST /{database}/createCollection
    Host: games.mydomain.com 
    {...}

创建文档

    POST /{database}/{collection}/
    Host: games.mydomain.com 
    {...}

-OR -

    POST /{database}/{collection}/createDocument
    Host: games.mydomain.com 
    {...}

我知道它不像REST,但API必须创建资源中间路径(即集合)。不知道我怎么能解决这个问题?

提前致谢!

- 铁托

0 个答案:

没有答案