我有一个关于如何正确设计关联和取消关联资源的REST接口的问题。我有rooms
代表房屋中的房间,things
代表房间内的房间。用户通过POST到/rooms
将房间添加到他们的家中,并通过POST到/things
来创建“事物”。大。我们有房间和东西等等。问题是,我如何关联和解除这些事情?
选项,据我所知:
选项1 - PUT
到things
资源的rooms
数组。若要取消关联,请将新数组投放到rooms
资源,少一thingId
选项2 - POST
至/rooms/:roomId/thing_associations
。通过DELETE
返回要用于/rooms/:roomId/thing_associations/:associationId
的资源关联标识符。这类似于连接表。
选项3 - POST
到/rooms/:roomId/devices/:deviceId
创建关联。 DELETE
至/rooms/:roomId/devices/:deviceId
以销毁该关联。我个人讨厌这个选项,因为它会在我的大脑中造成紧张: - |
会爱你的想法。还有什么我没想过的?可能。
谢谢!
答案 0 :(得分:0)
一件事可以同时在两个房间吗?如果不是,我会选择选项1.
获取 - / rooms / 房间清单
获取 - / rooms / $ {room_id} 房间详情
POST- / rooms / $ {room_id} 添加或更新房间
DELETE - / rooms / $ {room_id} 删除房间
GET - / rooms / $ {room_id} / things / $ {room_id}
中列出的东西ID列表获取 - / rooms / $ {room_id} / things / $ {thing_id} $ {thing_id}的详细信息
POST - / rooms / $ {room_id} / things / $ {thing_id} 添加或更新$ thing_id
DELETE - / rooms / $ {room_id} / things / $ {thing_id} 删除$ thing_id
等...