2013-05-21 3 views
1

나는 다음의 RESTful API가 :RESTful API를 BackboneJS 모델 및 컬렉션의 URL에 매핑하는 방법은 무엇입니까?

GET /club/1.0/club.json?sport=FO&country=ES

이 서비스는 스포츠 및 국가 클럽의 목록을 제공을 (예 : 스페인 축구)

GET /club/1.0/club.json?id=xxxx

이 서비스는 세부 사항을 제공합니다 클럽의

Backbone.js에서 Collection ::

에 대한 다음 URL을 시도해 보겠습니다. 0

http://localhost:3000/club/1.0/club.json ,

질문 :

나는 버전 해결할 수있는 방법
  1. ?
  2. 스포츠국가 인 인 필수 매개 변수를 어떻게 지정할 수 있습니까?

    http://localhost:3000/club/1.0/club.json,

    내가 저장 방법은 추가/때문에이 일을 쉽게 생각 : 작업 할 UrlRoot에에 ID를 모델에 대한

나는이 UrlRoot에를 사용 내 ExpressJS 서버.

답변 해 주셔서 감사합니다.

답변

1

컬렉션/모델에서 백본 동기화를 사용하여 설정해야합니다. 예 :

컬렉션 :

var ClubCollection = Backbone.Collection.extend({ 
    model: ClubModel, 
    sync: function(method, collection, options){ 
    options = _.extend({}, options, {url: 'club/1.0/club.json'); 
    return $.ajax(options); 
    } 
}); 

모델

var ClubModel = Backbone.Model.extend({ 
    sync: function(method, model, options){ 
    options = _.extend({}, options, {url: 'club/1.0/club.json'); 
    switch (method) { 
     case 'read': 
    options.data = _.extend({}, options.data, { 
     id: model.id 
     }); 
    break; 
    // case 'delete': 
    // break; 
    // case 'update': 
    // break; 
    // case 'create': 
    // break; 
    } 
    return $.ajax(options); 
    } 
}); 

그런 다음 yourCollection.fetch({data:{sport:'FO',country:'ES'}})를 사용하여 요청을합니다. 그리고 귀하의 모델은 myModel.set('id', 1).fetch() 일 수 있습니다.

업데이트 : 아, 버전 관리의 경우 번호 대신 직접 변수를 사용할 수 있습니다.

+0

당신이 짝을 지었습니까? –

1

버전 관리는 어떻게해야합니까?

당신이있는 경우, 버전의 값을 보관 유지하는 전역 변수 (또는 다른 범위 변수는이 지점을 변경하지 않습니다)의 말을하자, 당신은 클래스 선언에 urlRoot: '/club/' + VERSION + '/club.json' 그런 짓을, 또는 urlRoot를 선언 할 수 있습니다 함수로서 (여기서 특별한 이점은 없다) urlRoot: function() {return '/club/' + VERSION + '/club.json';}.

스포츠 및 국가에 필요한 매개 변수를 어떻게 지정할 수 있습니까? myModel.fetch({data: {sport: 'FO', country: 'ES'}}); :

쉬운 방법이 fetch 전화의 data 옵션에 추가하는 것입니다 (당신은 당신의 등뼈 AJAX 호출 어떤 jQuery를 ajax 방법의 옵션을 전달할 수 있습니다).

+0

나는 이것을 좋아한다. API 구현 자에게 한 가지 작은 메모 : API에 대한 버전을 데이터 옵션으로 전달해야합니까? version = xxx는 장기적으로 더 강력 할 것입니다. – poseid

관련 문제