我有一个场景,我有REST API来管理我们称之为Group的资源。 一个小组在概念上类似于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
只有后者才会返回有关该组的统计信息。你怎么看待这个?
答案 0 :(得分:5)
我认为您的方法没有问题。由于统计信息基本上是单独的数据,因此您可以将统计信息视为单独的资源,并提供类似
的URIGET /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: {
[ ... ]
}
}
答案 1 :(得分: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"
}