के साथ एक आरईएसटी खोज कैसे डिजाइन करें मैं एक एपीआई डिजाइन कर रहा हूं और इसे बैकबोन.जेएस के साथ भी उपभोग कर रहा हूं। एपीआई के भाग में खोज परिचालन शामिल होंगे।रीढ़ की हड्डी
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();
क्या फायदे/इन विकल्पों में से नुकसान कर रहे हैं ? क्या इसे डिजाइन करने का रीढ़ की हड्डी है?
मैं विकल्प 2 की तरफ झुक रहा हूं क्योंकि पेजिंग विवरण, या अगली यूआरएल जैसी प्रतिक्रियाओं में चीज़ों को जोड़ना आसान लगता है। लेकिन विकल्प 2 कुछ तरीकों से गड़बड़ लगता है। उदाहरण के लिए, क्या मैं सहेजे जाने पर खोज मॉडल के लिए सर्वर पर एक आईडी उत्पन्न करूंगा? मुझे नहीं लगता कि मुझे आईडी द्वारा उस मॉडल को प्राप्त करने, हटाने या अपडेट करने की आवश्यकता है, वास्तव में यह समझ में नहीं आता है क्योंकि मैं इसे जारी नहीं रख रहा हूं।
यह वास्तव में सही जवाब है। –