2013-06-03 6 views
12

API должен указать api-версию application/vnd.api+json;version=1, а также нужен безопасный x-app-id и x-app-secret. Есть ли способ указать, что в RESTAdapter в Ember?Как добавить заголовок для всех запросов в ember-запрос RESTAdapter

После попытки заголовка запроса

App.Adapter = DS.RESTAdapter.extend({ 
    namespace: 'api', 
    beforeSend: function(xhr) { 
    xhr.setRequestHeader('x-my-custom-header', 'some value'); 
    } 
}) 

РЕШЕНИЕ

App.Adapter = DS.RESTAdapter.extend({ 
    bulkCommit: true, 
    namespace: 'api', 
    headers: { 
    'Accept': 'application/vnd.app+json;version=1', 
    'x-appid': '2375498237', 
    'x-secret': '238945298235236236236236375923' 
    }, 
    ajax: function(url, type, hash) { 
    if (this.headers !== undefined) { 
     var headers = this.headers; 
     hash.beforeSend = function (xhr) { 
     Ember.keys(headers).forEach(function(key) { 
      xhr.setRequestHeader(key, headers[key]); 
     }); 
     }; 
    } 
    return this._super(url, type, hash); 
    } 
}); 

App.Store = DS.Store.extend({ adapter: App.Adapter.create() }); 
App.Store = App.Store.create(); 

ОБНОВЛЕНИЕ # 2

Раствор упоминалось выше больше не нужен, так как угасающий теперь поддерживает это поведение по умолчанию. Вам нужно только поставить headers, и он будет автоматически добавлен.

Заканчивать Документы здесь http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_custom-http-headers

+0

Не работает для меня; когда я смотрю на запрос, в нем нет заголовков. Есть идеи ? Проблема с версией mabye? – fabien

+0

Вы вызываете '' 'App.Store = DS.Store.extend ({ adapter: App.Adapter.create() });' '' Then' '' App.store = App.Store.create (); '' 'После того, как вы добавите вышеуказанный код? –

+0

И это сработало :) Спасибо – fabien

ответ

5

На ядре RESTAdapter использует JQuery для Ajax, вы можете установить заголовки с $ .ajaxSetup или более Ember образом с Эмбером. $. AjaxSetup которая идеально защитят вас от нижнего уровня в API.

JQuery Doc: http://api.jquery.com/jQuery.ajaxSetup/

SO с примерами:

How can I add a custom HTTP header to ajax request with js or jQuery?

+0

Хорошо, какие-либо идеи о том, как я могу надежно установить x-app-secret? –

+0

Также см. Https://github.com/emberjs/data/issues/722 –

+0

Все, что я могу скопировать. Я не могу заставить кого-либо из них работать в моем проекте. или я не знаю, как их интегрировать. –

Смежные вопросы