我有这样一个dstore/Rest实例:
const entries = new Rest({ target: '/rest/entries' })我需要为每个PUT/POST请求添加一个令牌作为查询参数,所以PUT/POST请求的url应该如下所示:
'/rest/entries/100500?token=some_token'在dstore/Rest中有什么简便的方法可以这样做吗?或者在每个请求之前设置标头,并将令牌放在那里。不管怎么说,我的问题是当我打电话时,要建立正确的请求。
entries.add({id: 100500, value: 'someValue'})更新:
我发现,Rest.add接受两个参数-- object和options,并设法在标头中添加令牌:
entries.add(entry, {
headers: {
Token: token
}
})但我仍然对查询参数感到好奇。
发布于 2018-04-28 11:19:11
我设法为自己找到了以下解决方案:
lang.extend(Rest, {
setToken: function(token) {
this.token = token
aspect.after(this, '_getTarget', function(target) {
if (this.token) {
target += '?token=' + this.token
this.token = undefined
}
return target
})
aspect.before(this, 'add', function() {
if (this.token) {
this.target += '?token=' + this.token
this.token = undefined
}
})
return this
}
})我就是这样用的:
entries.setToken(token).add(data)但我不确定这是不是完成我任务的好方法。
发布于 2018-04-27 21:50:22
我认为,通过创建自定义的MyRest.js类,在构造函数中添加一个标头可以帮助您在压缩器中传递令牌,然后,在每次不使用标头的情况下执行操作。
你的新课看起来应该是:
define([
'dojo/_base/declare',
'dstore/Rest',
'dojo/_base/lang',
], function (declare, Rest) {
return declare(Rest, {
// ^
// |
// inheritence -----
constructor: function(headers) { // headers object : {Token: token};
this.inherited(arguments); // like super() in poo
this.headers = this.headers || {};
lang.mixin(this.headers, headers || {});
}
});
});https://stackoverflow.com/questions/50023425
复制相似问题