我正在编写一个 Backbone 应用程序,它应该与 REST API 接口(interface)。
当用户删除已被其他人删除的模型时,就会出现问题。在我看来,后端应该只返回成功(200),因为模型无论如何都会被删除。但是开发服务器端的人有不同的意见,因此我得到的是 404。作为比较,当请求实际上失败时 - 因此模型仍然存在 - 响应代码是 400,或者可能是 401(对于授权问题)。
由于出现错误,我实际上没有删除模型。我想要做的是修改此行为:如果我在删除模型时收到 404 错误,则应将其视为成功。但我不太确定处理这个问题最方便的方法是什么。
理想情况下,我希望避免将此逻辑放入 model.destroy
中。这会导致重复。我可以将其放入父类(super class)的 destroy 方法中,但模型无论如何都会重写此方法,每个方法都有自己的逻辑,因此会变得困惑。我希望此时 model.destroy
方法获得成功,而不知道实际响应是 404。
另一方面,我不确定如何将此逻辑放入 Backbone.sync 中,除非重写整个函数。
What is the most transparent way to transform all 404 responses to DELETE requests into success?
最佳答案
这是一个 hack,但应该可以解决问题:
model.destroy({
error: function(model, resp, options) {
if (resp.status == 404) {
resp.status = 200;
options.success(model, resp);
}
}
})
顺便说一句,截至 Backbone 0.9 、destroy()
和 create()
是乐观的。
关于javascript - Backbone JS - 在 REST 接口(interface)中删除模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141946/