REST:引用具有URI或UUID的实体?

时间:2014-10-06 20:21:25

标签: java api rest many-to-many associations

我正在创建一个公开类似于组成员身份的API。实际上,我有一个GroupMembership资源,该资源在/groupmembership公开。

现在,当我想在用户和群组之间创建新关联时,我会POST/groupmembership。我很好奇的是我应该如何引用UserGroup资源实例。我是通过URI完成的,还是通过他们的UUID来实现?也就是说,这两个有效载荷中哪一个有效?

POST /groupmembership
{
    user: "http://localhost:8080/user/abcd-def-ghij",
    group: "http://localhost:8080/group/1a2-b3c-4d5"
}

POST /groupmembership
{
    user: "abcd-def-ghij",
    group: "1a2-b3c-4d5"
}

我正在使用Spring HATEOAS,据我所知,没有办法取消引用实体id的链接,这使得第一种方法有些问题。基本上,给定一个链接,我希望能够找出引用该实体的UUID。但我也不想解析URI,因为它们应该是不透明的。 Spring HATEOAS可以这样做吗?

使用第二种方法,我可以简单地查一下,但我想知道哪种方法更有意义。困扰我的一件事是,第一件事具有应由客户处理的独特风味;即,它是遵循URI的客户端。看起来服务器应该只能处理UUID?但另一方面,服务器完全控制URI的结构,因此它似乎应该知道如何将URI解引用到适当的实体/资源ID。

1 个答案:

答案 0 :(得分:1)

您好,您不需要有效载荷。通过位置标题发布创建的Ressource的URL,状态代码为201。

要回答您的问题,请使用URI。 客户端不应该自己编写URI来获取资源。