2012-02-04 6 views
2

REST API와 인터페이스해야하는 백본 응용 프로그램을 작성 중입니다.백본 JS - REST 인터페이스에서 모델 삭제

내 문제는 사용자가 이미 다른 사람이 삭제 한 모델을 삭제할 때 발생합니다. 내 의견으로는, 백엔드는 모델이 어쨌든 삭제됨에 따라 성공 (200) 만 반환해야합니다. 그러나 서버 측을 개발하는 사람들은 다른 견해를 가지고 있습니다. 따라서 404를 얻습니다. 비교를 위해 요청이 실제로 실패 할 때 (즉, 모델이 아직 살아있을 때) 응답 코드는 400 또는 아마도 승인 문제의 경우 401입니다.

오류가 발생했기 때문에 실제로 모델을 제거하지 않았습니다. 내가 뭘 하려는지이 동작을 수정하는 것입니다 : 모델을 삭제하는 동안 404 오류가 발생하면 성공으로 처리해야합니다. 그러나 나는 이것을 처리 할 수있는 가장 편리한 방법이 무엇인지 잘 모른다.

이상적으로이 논리를 내부에 두지 않으려합니다. model.destroy. 이것은 반복으로 이어질 것입니다. 이 코드를 수퍼 클래스의 destroy 메서드에 넣을 수는 있지만 모델은이 메서드를 재정의합니다. 각 메서드는 자체 논리를 사용하므로 지저분 해집니다. 나는이 시점에서 model.destroy 메서드가 실제 응답이 404라는 사실을 알지 못해서 성공을 얻었 으면 좋겠다.

반면에,이 논리를 Backbone.sync 내부에 넣는 방법을 모르겠다. 전체 기능.

DELETE 요청에 대한 404 응답을 모두 성공으로 변환하는 가장 투명 한 방법은 무엇입니까?

답변

3

그것은 해킹,하지만 트릭 수행해야합니다

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

, BTW의로 Backbone 0.9, destroy()create()는 낙관적입니다.

+0

위대한 답변! 너는 나를 때렸지 만 내 것이 그렇게 좋지는 않았을거야. – naugtur

+0

감사합니다. 정상적으로 작동합니다. 이 견해를보기에는 약간 추한 것이지만 지금은 그렇게 할 것입니다. – Andrea