2

REST API に接続するバックボーン アプリケーションを作成しています。

ユーザーが他の誰かによって既に削除されたモデルを削除すると、私の問題が発生します。私の意見では、モデルはとにかく削除されるため、バックエンドは成功 (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 に答える