具有匿名/标识访问权限的REST API的最佳URI架构是什么?

时间:2011-10-18 10:12:03

标签: api url rest uri

我创建了一个API来访问这些用户拥有的用户和对象。对象可以由作者或某种主持人/主管匿名访问。

在所有三种情况下,一组字段可以不同(或者可以是相同的 - 它还不知道);至少对于匿名模式和已识别授权模式是不同的。

假设我们有一个用户456,并且该用户拥有一个对象123。

主要问题是: 这种情况下最好的URI模式是什么,每种模式的优缺点是什么:

第二个问题是: 这些资源是相同的还是同一实体的不同资源?

  1. 所有对象的一个​​URI,输出根据身份的缺失或存在而变化:

    /objects.json?criteria=xyz&user=456  -- result depends on identity & "user"
    /objects/123.json                    -- result depends on identity
    /users/456.json
    
  2. 匿名和已识别访问的不同URI,就好像它们是不同的资源一样:

    /objects.json?criteria=xyz           -- anonymous only
    /objects/123.json                    -- anonymous only
    /users/456.json
    /users/456/objects.json              -- identified only
    /users/456/objects/123.json          -- identified only
    
  3. 还有别的吗?

  4. UPD:刚发明:

    /objects/123                         -- basic info, same for anonymous&identified
    /objects/123/extra                   -- different kinds of extra info,
    /objects/123/extended                -- ... or extended representations,
    /objects/123/meta                    -- ... only for authorized roles for each.
    
    /objects?criteria=xyz                -- common search for objects
    /users/456/objects                   -- objects owned by user only
    

    公共和每用户列表中有额外资源的URI(列表是入口点),具体取决于使用的列表。

    使用这种方法,我们有指向资源的URI,这些URI不会根据请求用户的身份而变化。但我们仍然可以控制我们提供或不提供给请求用户的信息部分。并且URI不会以任何方式或方式重复。完美!

1 个答案:

答案 0 :(得分:0)

假设在上面的UPD中回答了这个问题。这个伪答案是关闭这个问题。