我有一个REST资源,其中包含一个项目列表。
例如:GET http://myurl/rest/items
这些项目目前没有id。 (但这并不重要) 该列表不应包含重复项。基于项目的属性确定重复项。 创建新项目时,应将其添加到列表顶部。当项目已存在时,应将其移至列表顶部。
我们现在通过使用一个帖子来实现这一点,当项目是新的时候返回201。它可以添加到列表的顶部。当项目已存在时,该项目将移至列表顶部,我们将返回205 RESET CONTENT。 这表示需要刷新项目列表的前端。
这似乎是一个很好的解决方案,因为它很容易理解,尽管我不确定它是否是最安静的'解?另外,我不确定这是否正确使用205 http代码?
如果还有其他建议,我想听听。
谢谢!
答案 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/。
希望它可以帮到你, 亨利