为每个 API 请求添加参数
Add parameter to every API request
我需要为发送到 JSON API 的每个请求添加身份验证令牌。
如何通过适配器添加它?
您可以使用 jQuery.ajaxPrefilter (http://api.jquery.com/jquery.ajaxprefilter/)
这是一个例子:
http://log.simplabs.com/post/57702291669/better-authentication-in-ember-js#gist6499654
Ember.$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
if (!jqXHR.crossDomain) {
jqXHR.setRequestHeader('X-AUTHENTICATION-TOKEN', App.Session.get('authToken'));
}
});
将此代码添加到初始化程序或为此创建一个新代码(例如 ajax-初始化程序)。
如果将其附加到 URL 没问题,您可以通过重写 buildURL 方法将适配器子类化(如您所要求的),然后将其附加到结果。对于授权,我会寻求 EntspAndi 的回答,但更常见的是(对于使用问题标题找到这个 SO 问题的人),这样的事情也很好:
import DS from 'ember-data';
export default DS.ActiveModelAdapter.extend({
buildURL: function(type, id, record){
console.log("Building URL: ", type);
var url = this._super(type, id, record);
url += "?extraparam=1"
return url
}
});
我需要为发送到 JSON API 的每个请求添加身份验证令牌。
如何通过适配器添加它?
您可以使用 jQuery.ajaxPrefilter (http://api.jquery.com/jquery.ajaxprefilter/)
这是一个例子: http://log.simplabs.com/post/57702291669/better-authentication-in-ember-js#gist6499654
Ember.$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
if (!jqXHR.crossDomain) {
jqXHR.setRequestHeader('X-AUTHENTICATION-TOKEN', App.Session.get('authToken'));
}
});
将此代码添加到初始化程序或为此创建一个新代码(例如 ajax-初始化程序)。
如果将其附加到 URL 没问题,您可以通过重写 buildURL 方法将适配器子类化(如您所要求的),然后将其附加到结果。对于授权,我会寻求 EntspAndi 的回答,但更常见的是(对于使用问题标题找到这个 SO 问题的人),这样的事情也很好:
import DS from 'ember-data';
export default DS.ActiveModelAdapter.extend({
buildURL: function(type, id, record){
console.log("Building URL: ", type);
var url = this._super(type, id, record);
url += "?extraparam=1"
return url
}
});