在模型同步时发送带有 json 的 API 密钥

Send API key with json when model is synching

本文关键字:json API 密钥 模型 同步      更新时间:2023-09-26

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

谢谢。

这应该让你开始

//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();
​

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

因为 api 密钥几乎必须在所有 ajax 请求中添加。我使用了每次发送 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);
});