Стандартный обработчик синхронизации Backbone отображает CRUD в REST, как показано ниже:
- create → POST / collection
- read → GET / collection [/ id]
- update → PUT / collection / id
- delete → DELETE / collection / id
Иногда старые серверы эмулируют HTTP, имитируя метод HTTP с помощью _method и X-HTTP-Method-Overrideзаголовок.Если это так, вы должны установить Backbone.emulateHTTP
в true
. Если вы хотите настраивать сопоставления, вам нужно переопределить Backbone.sync.Пример переопределения может быть следующим:
Backbone.sync = function(method, model, options, error) {
// Backwards compatibility with Backbone <= 0.3.3
if (typeof options == 'function') {
options = {
success: options,
error: error
};
}
var resp = function(resp) {
if (resp.status) {
options.success(method != 'read' ? model : resp.data);
}
else {
options.error('Record not found ' + resp.data);
}
};
var store = model.customStorage || model.collection.customStorage;
switch (method) {
case 'read': model.id ? store.read({id: model.id}, resp) : store.readAll(resp); break;
case 'create': store.create(model.attributes, resp); break;
case 'update': store.update(model.attributes, resp); break;
case 'delete': store.delete(model.id, resp); break;
}
};
Там, где customStorage - ваша реализация, это может быть все, что вы хотите, в соответствии с методами, которые я создал.Некоторое время назад я создал переопределение базовой синхронизации для хранилища HTML5 WebSQL, оно с открытым исходным кодом расположено на GitHub https://github.com/mohamedmansour/backbone.webStorage
Надеюсь, это поможет вам начать!Удачи!