我一直在 REST API 中使用 POST 来创建对象。每隔一段时间,服务器就会创建该对象,但客户端会在收到 201 Created
响应之前断开连接。客户端只看到失败的 POST 请求,稍后再试,服务器愉快地创建了一个重复的对象...
其他人肯定也遇到过这个问题吧?但我用谷歌搜索了一下,每个人似乎都忽略了它。
我有两个解决方案:
A) 使用 PUT 代替,并在客户端上创建 (GU)ID。
B) 将 GUID 添加到客户端上创建的所有对象,并让服务器强制执行其UNIQUE
特性。
A 与现有框架不太匹配,而 B 感觉像是一个 hack。在现实世界中,其他人如何解决这个问题?
编辑:
使用 Backbone.js,您可以在客户端创建对象时设置 GUID 作为 id。保存后,Backbone 将执行 PUT 请求。将您的 REST 后端句柄 PUT 到不存在的 id,然后就完成了。
最佳答案
我总是使用 B——由于服务器端出现任何问题而检测重复项。
关于rest - 使用 REST 避免重复的 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15159274/