为每个API请求添加参数

时间:2015-03-09 14:26:09

标签: ember.js ember-data ember-cli

我需要为每个发送到JSON API的请求添加身份验证令牌。

如何通过适配器添加它?

2 个答案:

答案 0 :(得分:3)

您可以使用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-initializer)。

答案 1 :(得分:1)

如果将它附加到URL就可以了,您可以通过覆盖buildURL方法,然后将其附加到结果来子类化适配器(按照您的要求)。对于授权,我会选择EntspAndi的答案,但更常见的是(对于使用问题标题发现此问题的人),这样的事情也可以正常工作:

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
    }

  });