REST api设计用于检索摘要信息

Jac*_*ine 4 rest json api-design

我有一个场景,我有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"
}
Run Code Online (Sandbox Code Playgroud)

第二个GET访问方法可以检索更具统计性的摘要信息,如:

{ 
    group_id: "5t7yu8i9io0op",
    top_ranking_users: {
      [ { user: "george", posts: 789, rank: 1 }, 
        { user: "joel", posts: 560, rank: 2 }  ...]
    },
    popular_topics: {
      [ ... ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想分开这些数据访问方法,我正在计划这个设计:

GET /group/:group_id/
GET /group/:group_id/stat
Run Code Online (Sandbox Code Playgroud)

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

Daf*_*aff 5

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

GET /stat/:group_id
Run Code Online (Sandbox Code Playgroud)

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

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: {
      [ ... ]
    }
}
Run Code Online (Sandbox Code Playgroud)