假设我有一个由URI / rest / persons表示的Person资源的集合。每个人资源都有一组Thing资源,而URI基本上是/ rest / persons / {id} / things。现在,假设客户希望查看所有Thing资源,而无需通过每个人ID。应该使用什么URI?以下是一个好的设计:
/休息/人/事
或者他们应该通过人物集合上的查询参数进行某种过滤吗?
/休息/人?东西=所有
另一种选择是将人和事物分成两个单独的URI(因此没有明显的父 - >子关系)
有没有更好的方法,或者是否应该劝阻。请记住,目标是限制客户端想要获取所有Thing资源的汇总而不管拥有者是谁的请求数量。
答案 0 :(得分:0)
我会这样建模:
GET /rest/persons/{id}
GET /rest/persons/{id}?expand=things
GET /rest/things
GET /rest/things?person={id}
如果使用?expand=things
,则返回人员资源中嵌入的所有内容。如果不是,您可以只返回其URI(首选)或不返回值。
我会避免使用/rest/persons/things
,因为我不喜欢将一系列事物作为一个人的同伴的想法。它对我来说没有意义。
你绝对应该避免使用/rest/persons?things=all
,因为你的请求URI说的是#34;给我所有的人提供他们所有的东西",但你的回答只是一堆东西。