Backbone.js의 Sync기능은 기본적으로 Restful한 서버에서 동작합니다.
이 기능을 실습해 보기 위해서 실제로 서버를 구현하는 것은 그것대로 좋은 경험이겠지만
정작 Sync기능보다 서버를 구현하기 위한 학습시간이 더 길어지곤 했습니다.
그래서 이틀 걸려(?) 다음의 라이브러리를 만들었습니다!(차라리 서버를 만들지 그랬어;;) static 웹 페이지에서 동작하는 간단한 stub서버
(Sinon.js도 잠시 고려했었으나, Url을 판별하기 위해서 정규표현식을 사용해야 하고, $.ajax에 대응하는 dataType이 html으로 한정되기에 사용하지 않기로 결정했습니다.)
BackBone.js의 Sync기능은 기본적으로 다음과 같은 HTTP메소드를 사용하는 서버와 연동됩니다.
update: PUT
delete: DELETE
create: POST
select: GET
우선 가상 서버에 GET, PUSH, DELETE, POST메소드를 작성해 줍시다. 이곳의 코드를 사용하세요.
가상 서버와 연동할 Backbone.Collection을 구현합니다.
정상적으로 동작하는지 개발자 도구를 통해 확인해 봅니다.
그런데 분명 Create 명령을 내렸는데, Update를 합니다..!
그 이유는 모델 생성 초기값에 id속성을 넣었기 때문이었습니다.
Backbone.Sync 메소드 테스트
다음과 같이 전역 Sync 메소드를 구현하면 원래의 Sync기능을 오버라이드합니다.
즉, Restful하지 않은 서버와 통신해야 할 때, 이 함수를 구현하면 됩니다.
Backbone.Model.Sync ,Backbone.Collection.Sync 메소드 테스트
이들 모두 오버라이드 가능한 sync메소드가 있습니다.
이 부분을 오버라이드 하면 Restful하지 않은 서버와 통신할 수 있게 됩니다.
결론
1. Backbone.sync, Backbone.Model.Sync, Backbone.Collection.Sync 함수를 구현해 주면
Restful하지 않은 서버를 대상으로도 Sync기능을 활용할 수 있다.
2. Backbone.Model과 Backbone.Collection의 defaults 프로퍼티에 id 어트리뷰트를 삽입하면
Sync의 create명령이 update명령으로 오동작할 수 있다.