4

我有一个场景,其中我有 REST API 来管理我们将称为组的资源。群组在概念上类似于 Google 群组中的讨论论坛。

现在我有两个 GET 访问方法,我认为它们需要单独的表示。

第一种 GET 访问方法检索有关组的最少量信息。给定一个group_id它应该返回最少量的信息,例如

{ 
    group_id: "5t7yu8i9io0op",
    group_name: "Android Developers",
    is_moderated: true,
    number_of_users: 34,
    new_messages: 5,
    icon: "http://boo.com/pic.png"
}

第二种 GET 访问方法检索本质上更具统计性的摘要信息,例如:

{ 
    group_id: "5t7yu8i9io0op",
    top_ranking_users: {
      [ { user: "george", posts: 789, rank: 1 }, 
        { user: "joel", posts: 560, rank: 2 }  ...]
    },
    popular_topics: {
      [ ... ]
    }
}

我想分离这些数据访问方法,我目前正在计划这种设计:

GET /group/:group_id/
GET /group/:group_id/stat

只有后者会返回关于组的统计信息。你怎么看待这件事 ?

4

2 回答 2

5

我认为您的方法没有问题。由于统计数据基本上是单独的数据,因此您也可以将统计数据视为单独的资源,提供类似的 URI

GET /stat/:group_id

此外,您可以交叉引用您的资源(意味着组链接到相应的统计资源,反之亦然):

GET /group/5t7yu8i9io0op

{ 
    group_id: "5t7yu8i9io0op",
    group_name: "Android Developers",
    is_moderated: true,
    number_of_users: 34,
    new_messages: 5,
    icon: "http://boo.com/pic.png",
    stats: "http://mydomain.com/stat/5t7yu8i9io0op"
}

GET /stat/5t7yu8i9io0op

{ 
    group: "http://mydomain.com/group/5t7yu8i9io0op",
    top_ranking_users: {
      [ { user: "george", posts: 789, rank: 1 }, 
        { user: "joel", posts: 560, rank: 2 }  ...]
    },
    popular_topics: {
      [ ... ]
    }
}
于 2010-03-30T08:25:59.060 回答
4

如果您在组摘要中嵌入指向统计信息的链接,那会更好:

{ 
    group_id: "5t7yu8i9io0op",
    group_name: "Android Developers",
    is_moderated: true,
    number_of_users: 34,
    new_messages: 5,
    icon: "http://boo.com/pic.png"
    stats_link : "http://whatever.who/cares"
}
于 2010-03-30T12:23:30.557 回答