【发布时间】:2013-05-30 03:08:19
【问题描述】:
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();
更新 #2
不再需要上述解决方案,因为 Ember 现在默认支持此行为。您只需要提供headers,它就会自动添加。
在此处查看文档http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_custom-http-headers
【问题讨论】:
-
不适合我;当我查看请求时,其中没有标题。任何想法 ?可能是版本问题?
-
你是不是调用
App.Store = DS.Store.extend({ adapter: App.Adapter.create() });然后App.store = App.Store.create();添加上面的代码后? -
成功了 :) 谢谢
-
任何没有 Ember-Data 的解决方案?!
-
@V-Light 使用 jQuery 很容易做到
标签: ember.js ember-data