나는 API를 디자인하고 Backbone.js와 함께 소비하고있다. API의 일부에는 검색 작업이 포함됩니다. 나는 결과를 소비하는 두 가지 옵션을 볼 수 있습니다 백본으로백본을 사용하여 REST 검색을 설계하는 방법
http://api.mysite.com/search/cars?q=volvo
: 자동차를 검색 할 때 예를 들어, 내가 좋아하는 뭔가가있을 수 있습니다.
옵션 1 : 검색하면 컬렉션을이다
var CarSearch = Backbone.Collection.extend({
model: Car,
initialize : function(models, options){
this.query = options.query;
},
url: function(){
return "http://api.mysite.com/search/cars?q="+this.query;
}
});
var volvos = new CarSearch([], {query:'volvo'});
volvos.fetch();
옵션 2 : 검색은 모델이며, 결과는 컬렉션에게 있습니다
var CarSearchResults = Backbone.Collection.extend({
model: Car
});
var CarSearch = Backbone.Model.extend({
defaults: {
"query":"",
"carSearchResults":null
},
url: function(){
return "http://api.mysite.com/search/cars?q="+this.get('query');
},
parse: function(resp,xhr){
resp.carSearchResults = new CarSearchResults(resp.carSearchResults);
return resp;
}
});
var volvoSearch = new CarSearch();
volvoSearch.set({query:'volvo'});
volvoSearch.save();
장점/이러한 옵션의 단점은 무엇입니까 ? 이것을 설계하는 중추적 인 방법이 있습니까?
페이지 넘김 세부 정보 또는 다음 URL과 같은 응답에 항목을 추가하는 것이 더 쉬운 것처럼 보이기 때문에 옵션 2쪽으로 기울어졌습니다. 그러나 옵션 2는 몇 가지 방법으로 더 복잡해 보입니다. 예를 들어 검색 모델 저장시 서버에 ID를 생성합니까? ID로 모델을 가져와야한다고 생각하지 마십시오. 모델을 삭제하거나 업데이트해도 실제로 유지하지 못할 수도 있습니다.
이 실제로 정답이다. –