我正在设计一个管理收藏夹的RESTful API。每个收藏资源可以包含两个项目的详细信息,这些项目被视为收藏的一部分。
HTTP POST /favorites
{ "item1" : "ball",
"item1-ID" : "1",
"item2" : "bat",
"item2-ID" : "2"
}
请原谅简陋的JSON负载。然而,重点在于POST的语义。
以上POST方法创建了一个新的收藏资源(其中包含一个球(ID 1)和一个棒(ID 2))。
我的问题是关于当相同的POST请求被发送两次时预期行为是什么。第一次请求将创建一个喜爱的资源(如预期所示)。当第二个请求被发送时应该发生什么?
1)使用错误代码409信号
2)使用成功代码201信号
1)不是幂等的(因为POST是),而2)使POST成为幂等的。
哪种方法是正确的?