API需要指定api版本application/vnd.api+json;version=1
,还需要安全的x-app-id和x-app-secret。有没有办法在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();
不再需要上面提到的解决方案,因为Ember现在默认支持此行为。您只需提供headers
即可自动添加。
查看此处的文档http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_custom-http-headers
答案 0 :(得分:5)
RESTAdapter的核心是使用jQuery for Ajax,您可以使用$ .ajaxSetup设置标头,或者使用Ember。$ .ajaxSetup设置更多Ember方式,这样可以保护您免受API的较低级别更改。
jQuery Doc: http://api.jquery.com/jQuery.ajaxSetup/
所以举例:
How can I add a custom HTTP header to ajax request with js or jQuery?