Api REST最佳实践:存储也应该返回元数据吗?

Api REST最佳实践:存储也应该返回元数据吗?,api,rest,Api,Rest,我正在为一个个人项目构建我的第一个RESTAPI(至少正在尝试) 在这个项目中,有名为players的资源,这些资源可以在团队中保存。根据需要,资源应被设置为文档或存储区,并且应尽可能将这些角色分开 然而,我想在团队资源中附加一些元数据,例如团队成立的日期。那么,GET/teams/atlanta是否可以将此元数据(使其成为文档)与团队中的players列表(使其成为存储)一起返回 这是个好主意吗?如果是,为什么?如果不是,为什么不呢?如何更好地解决这个问题 我知道开发RESTAPI没有规则,但

我正在为一个个人项目构建我的第一个RESTAPI(至少正在尝试)

在这个项目中,有名为
player
s的资源,这些资源可以在
团队中保存。根据需要,资源应被设置为文档存储区,并且应尽可能将这些角色分开

然而,我想在
团队
资源中附加一些元数据,例如
团队
成立的日期。那么,
GET/teams/atlanta
是否可以将此元数据(使其成为文档)与团队中的
player
s列表(使其成为存储)一起返回

这是个好主意吗?如果是,为什么?如果不是,为什么不呢?如何更好地解决这个问题


我知道开发RESTAPI没有规则,但是有一些好的实践,我愿意遵守这些规则。也请注意,这实际上是我的第一个REST API,如果有,请原谅我的无知。

我建议让
GET/teams/atlanta
只返回有关团队的信息,例如您提到的成立日期,然后让
GET/teams/atlanta/players
返回该团队的球员列表。当您展示一个使用HTTP方法而不是GET的API时,这些区别变得更加重要

例如,如果您想向团队中添加一名球员-如果您只需将球员对象发布到
/teams/atlanta/players
中,这将比每次添加一名球员时必须将整个团队对象发布到
/teams/atlanta
中容易得多

如果您的API只允许检索数据,并且是针对特定的客户机应用程序,则有理由将所有团队数据合并到一个对象中,以避免客户机不得不对数据发出额外的请求,但请记住,这样做灵活性较低

您的应用程序可能希望通过调用
GET/teams
来显示球队列表,但您可能不希望列表中的每个对象都包含所有球员信息,因为这是相当多的数据,但是如果
GET/teams/atlanta
返回球员信息,那么不将其包含在列表版本中是不一致的


我个人倾向于按照我的建议拆分资源,并接受客户可能需要提出一两个额外请求的事实。

nice没有想到这一点!这样,团队也可以更容易地扩展(例如
/teams/atlanta/mascots
)。我想我只是还没有休息的心态。