2

我正在实施一个在浏览器上使用backbone.js 与我的服务器通信的项目。是否可以在不将其添加到模型中的情况下随请求发送 api 密钥?在响应时,我可以检查与实际模型无关的数据,例如访问令牌?

谢谢你。

4

2 回答 2

3

这应该让你开始

//the api key object
var apikey = {api:"^@%&HJJHJSDNkkjGHGSd*^*JHJ"};

//Backbone model
var model = Backbone.Model.extend({
url:"/todo",
sync:function(method,model,options){
  _.extend(model.attributes,apikey);
  Backbone.sync(method,model,options);
}});

更新

//the api key object
var apikey = {api:"^@%&HJJHJSDNkkjGHGSd*^*JHJ"};

//Backbone model
var model = Backbone.Model.extend({
url:"/todo",
sync:function(method,model,options){
    $.ajaxSetup({headers:apikey});
    Backbone.sync(method,model,options);
}});

var x = new model({todo:"Welcome"}).save();
​

经过一番思考,将“咀嚼”模型发送到服务没有意义,因此更新后的代码会将 apikey 与请求标头附加在一起。在请求标头中搜索的关键是api

于 2012-05-17T10:15:17.070 回答
3

由于几乎必须在所有 ajax 请求中添加 api 密钥。我使用了每次发送 ajax 调用时调用的 jquery 函数:

$.ajaxPrefilter(function (options, originalOptions, jqXHR){ 
  var newObject = {
     append_new : 'APIKey'
  }

  options.data = $.param($.extend(originalOptions.data, newObject));
});

对于我使用的回复部分:

$('body').ajaxSuccess(function(e, xhr, settings){
  console.log(xhr);
});
于 2012-05-18T08:24:49.730 回答