Ember.js RESTAdapter:在设置报头时访问JSON参数
Ember.js RESTAdapter: Access JSON params when setting headers
我正在使用一个API,它需要Authorization
报头内部参数的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")
});
上面的代码是工作的,但我需要用实际的参数替换params
变量,在JSON格式(如上所述)。
如何做到这一点?
我假设你想建立一个基于查询参数的动态头。
我不认为你可以从headers
属性中获得任何查询参数,你可能想通过覆盖find*
函数来尝试构建header
。
我不认为在Ember Data中有一种原生的方法可以做到这一点。你的参数哈希是一个应该被序列化器处理的数据。但适配器不应该关心数据,所以似乎没有办法在适配器中获取参数。但是您可以尝试从拥有所有数据的序列化器设置headers
。
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
});
}
});
我不确定这将工作,我没有测试它。这只是一个想法。
相关文章:
- 访问JSON对象内部的数组元素
- 访问json数组中的对象
- 如何访问JSON元素
- 使用Backbone.js访问JSON响应的部分
- JS/JON-通过JS访问JSON中的多个数组
- 对于循环未正确访问 JSON 对象
- 使用 jasmine-node / frisby 访问 JSON 值
- 如何访问 JSON 对象数组的第一个元素
- 如何在 for 循环中访问 json 数组字段的名称
- Javascript 不会访问 json 对象
- 无法访问JSON对象的值
- 无法访问json对象中的数据
- 访问JSON对象中的特定值
- 如何通过javascript访问JSON数据
- 从Web服务访问JSON响应
- 我可以't访问JSON中的第一个对象
- 是否有可能访问JSON对象中列出的jQuery选择器
- 为什么我可以't使用点表示法访问JSON字典元素
- 访问JSON数组时出现问题
- 如何在processing.js中访问json数据