Настройка RESTAdapter, чтобы не устанавливать расширение.json для запросов get / list

Я использую междоменный API REST. Я определил свой пользовательский адаптер REST для запуска моего API. Pb - удалить ".json", автоматически установленный ember-model.

Как настроить мой адаптер, чтобы избежать установки моей "функции замены" (url = url.replace ('. Json', '');)

App.Book.adapter = Ember.RESTAdapter.create({
  ajaxSettings: function(url, method) {
    var authorization= "Basic " + btoa("login" + ":" + "pwd");
    url=url.replace('.json', '');
    return {
      url: url,
      type: method,
      dataType: "json",
      headers: {
        "Authorization": authorization
      },
    };
  }
});
App.Certificate.url='http://mysite/api/v1/books';

1 ответ

Решение

Как настроить мой адаптер, чтобы избежать установки моей "функции замены" (url=url.replace('. Json', '');)

Так как ember-модель не предоставляет никаких опций конфигурации, чтобы изменить это поведение, IMHO, ваше решение, выполнив url = url.replace('.json', ''); не так уж и плохо

Другой возможный способ, которым я могу придумать, - это открыть RESTAdapter и переопределить buildURL функция не включать .json,

Ember.RESTAdapter.reopen({
  buildURL: function(klass, id) {
    var urlRoot = Ember.get(klass, 'url');
    if (!urlRoot) { throw new Error('Ember.RESTAdapter requires a `url` property to be specified'); }

    if (!Ember.isEmpty(id)) {
      return urlRoot + "/" + id;
    } else {
      return urlRoot;
    }
  }
});

Но это не тот шанс на будущее, если исходный код изменится, и вы захотите обновить библиотеку, вам пришлось изменить также и переопределение.

Надеюсь, поможет.

Другие вопросы по тегам