2

我正在编写一个应该与 REST API 接口的 Backbone 应用程序。

当用户删除已被其他人删除的模型时,就会出现我的问题。在我看来,后端应该只返回成功(200),因为模型无论如何都会被删除。但是开发服务器端的人有不同的看法,因此我得到的是 404。相比之下,当请求实际失败时 - 因此模型仍然存在 - 响应代码是 400,或者可能是授权问题的 401。

由于出现错误,我实际上并没有删除模型。我想要做的是修改这种行为:如果我在删除模型时收到 404 错误,它应该被视为成功。但我不确定什么是最方便的方法来处理这个问题。

理想情况下,我想避免把这个逻辑放在model.destroy. 这将导致重复。我可以把它放在destroy超类的方法中,但是模型无论如何都会覆盖这个方法,每个都有自己的逻辑,所以它会变得混乱。我希望此时model.destroy方法获得成功,而不知道实际响应是 404。

另一方面,我不确定如何将此逻辑放入 Backbone.sync 中,除非重写整个函数。

将所有对 DELETE 请求的 404 响应转换为成功的最透明方法是什么?

4

1 回答 1

3

这是一个黑客,但应该做的伎俩:

model.destroy({
    error: function(model, resp, options) {
        if (resp.status == 404) {
            resp.status = 200; 
            options.success(model, resp);
        }
     }
})

顺便说一句,从Backbone 0.9开始,destroy()并且create()是乐观的。

于 2012-02-04T16:16:14.703 回答