我想知道是否有任何方法可以在自动执行JsonRest存储的Get ajax请求(xhr.get)中设置自己的自定义http标头。
有一个相关主题,但没有很好的解决方案:
Dojo Data grid with custom HTTP headers
我已经在'dojo.store.JsonRest'中看到了JsonRest实现,包括构造函数,我们是否可以做到这一点并不明显(但我不这么认为)。正在使用的JsonRest商店示例:
var store = new JsonRestStore({target: "/Table/" });
最佳答案
如您在this jsFiddle中所见,我将完成对dojo.store.JsonRest
的子类化。
A.子类dojo.store.JsonRest
:
var MyJsonRest = declare(JsonRest, {
get: function(id, options) {
return this.inherited(
arguments,
[id, lang.mixin(this.defaultGetHeaders, options)]
);
}
});
因此,您可以覆盖调用超类的
get
的get
方法,但是第二个参数options
(即标头)现在还将包含this.defaultGetHeaders
的属性。B.在构造函数中定义
defaultGetHeaders
:var myJsonRest = MyJsonRest({
target: "/echo/json/",
defaultGetHeaders: {
userId: "xyz",
requestedBy: "abc",
requestedFrom: "123"
}
});
C.调用
myJsonRest.get()
方法,您还可以覆盖默认标题:myJsonRest.get("someId", { requestedFrom: "321"}).then(function(result) {
console.log(result);
});
D.检查请求标头: