REST POST重复列表项

时间:2015-10-04 08:17:18

标签: rest

我有一个REST资源,其中包含一个项目列表。

例如:GET http://myurl/rest/items

这些项目目前没有id。 (但这并不重要) 该列表不应包含重复项。基于项目的属性确定重复项。 创建新项目时,应将其添加到列表顶部。当项目已存在时,应将其移至列表顶部。

我们现在通过使用一个帖子来实现这一点,当项目是新的时候返回201。它可以添加到列表的顶部。当项目已存在时,该项目将移至列表顶部,我们将返回205 RESET CONTENT。 这表示需要刷新项目列表的前端。

这似乎是一个很好的解决方案,因为它很容易理解,尽管我不确定它是否是最安静的'解?另外,我不确定这是否正确使用205 http代码?

如果还有其他建议,我想听听。

谢谢!

1 个答案:

答案 0 :(得分:1)

我发现您的方法很有趣并且RESTful,因为您利用HTTP状态代码来通知客户端不同的用例。目的是告诉客户端清除表单中的内容或刷新UI。这是规范:

  

服务器已完成请求,用户代理应该重置   导致请求发送的文档视图。这个回应是   主要用于允许通过用户进行操作的输入   输入,然后清除输入的形式   这样用户就可以轻松地发起另一个输入动作。

我读到状态代码<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select> <option>A</option> <option>B</option> <option>C</option> </select>主要关注表单重置表单。例如,要连续输入一系列记录:填写表单,发送数据,服务器告诉Web UI重置表单以在同一表单中发送其他内容等等。假设浏览器支持它,但它们实际上不支持这个!事实上,代码实际上并不常见。

但是,在我们的案例中,我发现这符合您的需求,而且更加RESTful。

另一种方法可能只是使用状态代码205告诉客户端请求是成功的,但与状态代码200不同,不会发生添加。使用状态代码201,您隐含地知道该项目已移至列表顶部,因此您需要刷新列表。

以下是状态代码204和205的有趣帖子:https://benramsey.com/blog/2008/05/http-status-204-no-content-and-205-reset-content/

希望它可以帮到你, 亨利