[javascript] Backbone.js에서 서버와의 데이터 싱크(Sync) 방법

Backbone.js는 클라이언트와 서버 간 데이터를 동기화하기 위해 sync 메소드를 제공합니다. 이 메소드를 사용하여 Backbone 모델과 컬렉션을 서버와 연결하여 데이터를 동기화할 수 있습니다. 이번 글에서는 Backbone.js에서 서버와의 데이터 싱크 방법을 알아보겠습니다.

sync 메소드란?

Backbone.js의 sync 메소드는 서버와의 데이터 동기화를 담당합니다. 이 메소드를 통해 모델이나 컬렉션에 대한 CRUD(Create, Read, Update, Delete) 연산을 서버에 전송하고, 서버로부터의 응답을 처리할 수 있습니다.

기본적인 sync 설정

Backbone.js의 sync 메소드는 기본적으로 jQuery.ajax를 사용하여 동작합니다. 따라서 기본적으로 jQuery가 필요합니다. 그러나, 필요에 따라 다른 Ajax 라이브러리로의 교체도 가능합니다.

기본적인 설정은 간단합니다. Backbone.js에서 제공하는 Backbone.sync 함수에 전달되는 method 속성을 통해 어떤 HTTP 메소드를 사용할지 지정할 수 있습니다. 예를 들어, create 메소드일 경우 POST, update 메소드일 경우 PUT, delete 메소드일 경우 DELETE 요청을 보내도록 설정할 수 있습니다.

Backbone.sync = function(method, model, options) {
  let url = options.url || _.result(model, 'url');

  if (method === 'create') {
    // POST 요청 보내기
  } else if (method === 'read') {
    // GET 요청 보내기
  } else if (method === 'update') {
    // PUT 요청 보내기
  } else if (method === 'delete') {
    // DELETE 요청 보내기
  }
};

sync 메소드 커스터마이징

sync 메소드를 커스터마이징하여 서버와의 통신 방식을 변경할 수 있습니다. 이를 통해 서버의 API와의 통신 방식을 맞출 수 있습니다.

Backbone.sync = function(method, model, options) {
  // 서버 통신을 위한 Ajax 호출 방식 변경
  options.dataType = 'json';
  options.contentType = 'application/json';

  // 서버의 API와 맞게 URL 형식 변경
  options.url = '/api/' + _.result(model, 'url');

  // 서버 요청 성공 또는 실패 시 콜백 설정
  options.success = function(response) {
    // 성공적인 서버 응답 처리
  };

  options.error = function(response) {
    // 서버 응답 실패 처리
  };

  // 변경된 옵션을 다시 설정
  return Backbone.ajaxSync(method, model, options);
};

이렇게 sync 메소드를 커스터마이징하면 서버와의 통신 방식을 자유롭게 조정할 수 있습니다.

참고자료