当资源具有唯一标识符时,将检索它:
/building/{building_id}
但是如果使用building_id
和floor_id
参数描述“事件”资源会怎样。如何命名用于检索当前事件的RESTful端点?
准确地说,“event”资源具有唯一标识符(id
)。 building_id
,floor_id
的组合应该在特定位置返回当前事件。
答案 0 :(得分:3)
是吗?我推荐这个:但是如果使用building_id和floor_id参数描述“event”资源会怎样。
如果
GET /events/{id}
返回一个事件和
GET /events
返回所有事件,然后
GET /events?building_id={building_id}&floor_id={floor_id}
返回building_id
和floor_id
组合的(可能只有一个)事件列表。
这看起来像经常使用的filter-or-search-a-collection-resource-pattern。
答案 1 :(得分:1)
除了Lutz的解决方案之外,万一你不希望他们成为query parameters
。
假设,从它看起来的名称,floor_id是building_id的一部分,所以如果事件资源被定义为两者的组合,它可以像
/event/{event_id}/building/{building_id}/floor/{floor_Id}
答案 2 :(得分:0)
我首先要考虑资源拥有什么。显然,建筑物拥有地板(敲打建筑物,地板被毁坏!)所以这是一个很好地映射到子资源的关系,但事件是否拥有建筑物或建筑物/楼层自己的事件?没有?然后我们通过链接来联系这些。 (一个楼层可能拥有当前事件概念作为它所拥有的东西,但这实际上是一个事件的链接,而不是事件本身。)
/building/{building_id}
/building/{building_id}/floor/{floor_id}
/building/{building_id}/floor/{floor_id}/current-event --redirect--> some event
/event/{event_id}
该活动可能应该包含与其所涉及的建筑物和楼层的超链接。换句话说,如果楼层没有当前事件,则获取…/current-event
将导致404,如果 是事件,则303重定向将说明它是什么。 (您可能还想让地板的记录本身包含事件的真实链接,以及便利查找子资源。)
一个好的RESTful应用程序看起来很像一个密集链接的网站。使用链接和重定向的力量!