在 dstore/Rest 请求中添加查询参数

Posted

技术标签:

【中文标题】在 dstore/Rest 请求中添加查询参数【英文标题】:Add query parameters at dstore/Rest request 【发布时间】:2018-04-25 13:17:35 【问题描述】:

我有一个这样的 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 接受两个参数 - 对象和选项并设法在标头中添加标记:

entries.add(entry, 
            headers: 
                Token: token
            
        )

但我还是对查询参数很好奇。

【问题讨论】:

headers 方法对你不好,你想在dstore/Rest 的实例上附加令牌吗? 标题没问题,但我必须添加令牌作为查询字符串参数。我已经找到了适合我的解决方案。我只是用 setToken 方法扩展了 Rest 类,并在 put/add 之前使用 dojo/aspect 附加令牌。 【参考方案1】:

我认为继承 dstore/Rest ,通过创建您的自定义 MyRest.js 类并在构造函数中添加标头将帮助您在 constrictor 中传递令牌,然后在不使用标头的情况下进行操作。

你的新班级应该是这样的:

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 || );
        
    );
);

【讨论】:

谢谢,我没有想过要这样做。【参考方案2】:

我已经设法为我找到以下解决方案:

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)

但我不确定这是完成任务的好方法。

【讨论】:

我会扩展 Rest,将你的方法添加到它自己的对象(文件)中,这样你就可以让它更可重用。

以上是关于在 dstore/Rest 请求中添加查询参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 客户端库将查询参数添加到 mailchimp 请求

将查询字符串参数添加到 Guzzle GET 请求?

将查询参数添加到 PHP 的 Mailchimp API 请求

Jmeter----请求的reponse结果中的某个参数作为JDBC Request的查询条件

DataTables添加额外的查询参数和删除columns等无用参数

谁添加“_”单下划线查询参数?