Мне удалось работать с REST API до fetch()
данных, где URL-адреса содержат минимальные параметры (и используют GET
).
Как получить сбор через запрос POST
?
Мне удалось работать с REST API до fetch()
данных, где URL-адреса содержат минимальные параметры (и используют GET
).
Как получить сбор через запрос POST
?
Также обратите внимание, что выборка поддерживает параметры Jquery.ajax, поэтому вы можете легко установить type = post в вызове.
Messages.fetch({data: {api_key: 'secretkey'}, type: 'POST'});
Дополнительные параметры: http://api.jquery.com/jQuery.ajax/
Вам может потребоваться расширить объект Collection, чтобы установить собственное соглашение для извлечения. При этом вы, скорее всего, предоставите свою собственную функцию выборки. Что-то вроде:
fetch : function(options) {
options || (options = {});
var model = this;
var success = function(resp) {
if (!model.set(model.parse(resp), options)) return false;
if (options.success) options.success(model, resp);
};
var error = wrapError(options.error, model, options);
(this.sync || Backbone.sync)('create', this, success, error);
return this;
}
где он использует 'create' вместо 'read'. На первом румянце это то, что я бы поставил первым, хотя может быть более элегантный способ сделать это.
Недостатком этого подхода является то, что у вас есть основной код в вашем приложении, и если изменения в каркасе могут возникнуть, вы можете столкнуться с проблемами. Вам было бы целесообразно разделить это изменение на отдельный слой, чтобы упростить его обновление с помощью новых выпусков фреймов.
Backbone.sync - это функция, используемая для взаимодействия с сервером через ваши модели. Вы можете предоставить свою собственную реализацию, которая выдает запрос POST для метода "read" вместо GET. См. http://documentcloud.github.com/backbone/#Sync
try {
// THIS for POST+JSON
options.contentType = 'application/json';
options.type = 'POST';
options.data = JSON.stringify(options.data);
// OR THIS for GET+URL-encoded
//options.data = $.param(_.clone(options.data));
console.log('.fetch options = ', options);
collection.fetch(options);
} catch (excp) {
alert(excp);
}