Javascript Ember.js RESTAdapter:设置标题时访问JSON参数

Javascript Ember.js RESTAdapter:设置标题时访问JSON参数,javascript,jquery,json,ember.js,ember-data,Javascript,Jquery,Json,Ember.js,Ember Data,我使用的API需要授权头中参数的HMAC sha256散列 例如,这些参数可能是: { "book": { "title": "Test title", "author": "Test author" } } 我的问题是,在设置标头时,我无法确定如何访问这些参数 export default DS.RESTAdapter.extend({ host: 'http://myapi', namespace: 'v1', shouldReloadAll() { return

我使用的API需要
授权
头中参数的HMAC sha256散列

例如,这些参数可能是:

{ "book": { "title": "Test title", "author": "Test author" } }
我的问题是,在设置标头时,我无法确定如何访问这些参数

export default DS.RESTAdapter.extend({
    host: 'http://myapi',
    namespace: 'v1',
    shouldReloadAll() { return true; },
    shouldBackgroundReloadRecord() { return true; },
    headers: function() {
        var params = 'PLACE THE PARAMS HERE';
        var hmacString = CryptoJS.HmacSHA256('string', params).toString(CryptoJS.enc.Hex);
        return {
            Authorization: hmacString
        }
    }.property("Authorization")
});
上面的代码正在运行,但我需要用JSON格式的实际参数替换
params
变量(如上所述)


如何实现这一点?

我假设您希望基于查询参数构建动态标头


我认为您无法从
headers
属性中获得任何查询参数,您可能希望通过重写
find*
函数来构造
header

我认为在余烬数据中没有一种本地方法可以做到这一点。您的params散列是应该由序列化程序处理的数据。但适配器不应该关心数据,所以似乎无法在适配器中获取参数。但您可以尝试从拥有所有数据的序列化程序中设置
标题

import DS from 'ember-data';
export default DS.RESTSerializer.extend({
    serializeIntoHash: function(data, type, record, options) {
        this._super(data, type, record, options);
        var adapter = this.store.adapterFor(type.modelName);
        var hmacString = CryptoJS.HmacSHA256('string', data).toString(CryptoJS.enc.Hex);
        adapter.set('headers', {
            Authorization: hmacString
        });
    }
});

我不确定这是否有效,我没有测试它。这只是一个想法。

如果你没有写下如何获得实际参数,我们怎么知道如何做到这一点?@DanielKmak这正是我要问的问题。我不知道怎样才能找到那些情人。我知道您可以使用
ajaxOptions:function(url,type,hash){this.\u super(url,type,hash).data}
获取参数,但这在
headers
函数中不起作用。有什么想法吗?没有,我是在问,你从哪里得到这个:
{“book”:{“title”:“Test title”,“author”:“Test author”}
,例如,你是通过ajax得到它们的吗?这些参数是DS.RESTAdapter发送到API服务器的示例,正如其他地方的模型中定义的那样。如果在
ajaxOptions
中调用
this.\u super(url,type,hash).data
,它们也会出现。