REST最佳实践:商店是否还应返回元数据?

时间:2013-02-13 13:05:55

标签: api rest

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

在这个项目中,有一些名为player的资源可以保存在team中。根据{{​​3}},资源应该是文档 商店,并且应该将这些角色保持为隔离状态可能的。

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

这是个好主意吗?如果是这样的话?如果不是为什么不,以及如何更好地解决这个问题?

我知道开发REST API没有规则,但有一些好的做法,我想坚持这些。请注意,这不是我的第一个REST API,所以请原谅我的无知。

1 个答案:

答案 0 :(得分:2)

我建议让GET /teams/atlanta仅返回有关团队的信息,例如您提及的创建日期,然后让GET /teams/atlanta/players返回该团队的玩家列表。当您呈现使用除GET之外的HTTP方法的API时,这些区别变得更加重要。

例如,如果你想将一个玩家添加到一个团队中 - 如果你可以将一个玩家对象发布到/teams/atlanta/players,那么这比将整个团队对象PUT /teams/atlanta要容易得多。 1}}每次你想添加一个单独的玩家。

如果您的API仅允许检索数据,并且如果它适用于特定客户端应用程序,则存在将所有团队数据组合到一个对象中以保存客户端必须对数据进行额外请求的参数,但是记住,它不太灵活。

您的应用程序可能希望通过调用GET /teams来显示团队列表,但您可能不希望列表中每个对象中包含所有播放器信息,因为这是非常多的数据,但是如果GET /teams/atlanta返回玩家信息,那么不会将其包含在列表版本中也是不一致的。

我个人赞成按照我的建议拆分资源,并且客户可能需要额外提出一两个请求。