Магистральный запрос PUT на междоменный домен не добавляет идентификатор к URL-адресу

У меня следующая модель позвоночника.

var aModel = Backbone.Model.extend({
   url: 'http://api.site1.com/list
});

modelObj = new aModel();

Домен моего приложения product.site1.com, поэтому все запросы, сделанные моим приложением на сервер, являются междоменными запросами.

Все мои магистральные запросы к API нуждаются в общем заголовке, поэтому я написал следующий метод синхронизации магистральной сети:

var sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
    options.beforeSend = function (xhr) {
        xhr.setRequestHeader('key1', 'ABCD');
        xhr.setRequestHeader('key2', 'EFGH');
    };
    sync(method, model, options);
};

Когда я выполняю метод выборки, как показано ниже

modelObj.fetch();

Мое приложение делает запрос OPTIONS к api.site1.com/list

В случае успеха этого запроса он делает запрос GET к api.site1.com/list

То же самое относится и к POST.

Когда я выполняю modelObj.save({name: "abc"}) перед выборкой, мое приложение отправляет запрос OPTIONS на api.site1.com/list, в случае успеха оно выполняет запрос POST.

Принимая во внимание, что когда я делаю это для обновления, т.е. PUT,

Я ожидаю, что магистраль добавит идентификатор к URL-адресу, например api.site1.com/list/1, и выполнит запрос OPTIONS.

Но когда я проверяю свои инструменты разработки, запрос OPTIONS отправляется на api.site1.com/list. В случае успеха он отправляет запрос PUT на api.site1.com/list вместо api.site1.com/list/1.

Почему это происходит и как поступить в этом случае?


person Sreedhar M B    schedule 16.01.2014    source источник


Ответы (1)


Установив aModel.url, вы принудительно используете URL-адрес в запросах. Вместо этого установите aModel.urlRoot :

urlRoot model.urlRoot или model.urlRoot()
Укажите urlRoot, если вы используете модель вне коллекции, чтобы включить функцию URL по умолчанию для создания URL-адресов на основе идентификатора модели.

Пытаться

var aModel = Backbone.Model.extend({
   urlRoot: 'http://api.site1.com/list'
});
person nikoshr    schedule 16.01.2014