javascript - Backbone JS - 在 REST 接口(interface)中删除模型

标签 javascript rest backbone.js http-delete

我正在编写一个 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.9destroy()create() 是乐观的。

关于javascript - Backbone JS - 在 REST 接口(interface)中删除模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141946/

相关文章:

javascript - 二维逆运动学 Angular 约束

java - 一个 web.xml 中的多个 Jersey servlet

rest - 在 Laravel 5.3 中找不到带有 PUT 请求的正文数据

inheritance - Backbone.js View 继承

javascript - 使用 .is() 目标 Canvas 外导航点击

java - 如何从机场代码获取纬度和经度?

javascript - 有没有什么方法可以将速度模板与backbone.js集成?

javascript - backbone.js - 事件,知道点击了什么

javascript - Tampermonkey 的 GM_xmlhttpRequest 未实现 'context' 属性?

Android 自定义 URL 方案拒绝工作/如何在 OAuth 之后导航回 Android 应用程序