所以我得到了模型User
& Poll
用户可以在其中创建多个民意调查(因此我们在此处获得1:n关系),并且作为用户的联接表Participant
可以是许多民意调查的一部分,并且民意调查可以有许多用户。< / p>
我需要定义两个REST端点: 一个用于获取用户创建的民意调查列表,一个用于获取用户是参与者的民意调查列表。
对于我定义的第一个端点:
GET /users/:id/polls
...这是定义1:n关系的常用方法。
但是对于第二个端点,我完全不知道在REST中它会是什么样子。我基本上有用户,需要用户参与的所有民意调查。我想把事情做好,不想浪费太多时间,所以我想出了这个令人厌恶的事情:
GET /users/:id/polls/participation
有没有人知道如何设计这个?甚至可以使用REST在一次调用中映射它吗?
答案 0 :(得分:1)
好吧,当我得到您的问题时,您需要构建简单的获取数据。 我建议你添加get param,如GET / users /:id / poll?participation = true。这可以参考您的模型并且易于理解。
答案 1 :(得分:1)
我主张将polls
作为顶级资源。然后你可以支持
GET /polls?createdBy={userId}
GET /polls?participant={userId}
您可以根据需要添加其他查询参数。另一种方法是使用一个单独的资源poll-participants
来保存映射。
GET /poll-participants?creator={userId}
GET /poll-participants?particpant={userId}
在这种情况下,您将获得一个包含映射对象列表的资源。他们可以拥有整个用户并在每个用户中进行投票,或者他们可以拥有您必须遵循的链接以获取完整用户和民意调查。当用户和轮询可缓存时,这种方法效果最佳。