Добавить параметры запроса в dstore / Rest request - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть экземпляр dstore / Rest, подобный этому:

const entries = new Rest({ target: '/rest/entries' })

И мне нужно добавить токен в качестве параметра запроса для каждого запроса PUT / POST, поэтому URL для моего запроса PUT / POST должен выглядеть следующим образомthis:

'/rest/entries/100500?token=some_token'

Есть ли в dstore / Rest какой-нибудь удобный способ сделать это?Или, может быть, установить заголовок перед каждым запросом и разместить там токен.В любом случае, моя проблема состоит в том, чтобы создать правильный запрос, когда я вызываю

entries.add({id: 100500, value: 'someValue'})

Обновление:

Я понял, что Rest.add принимает два аргумента - объект и параметрыи мне удалось добавить токен в заголовках:

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

Но мне все еще интересно узнать о параметрах запроса.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Мне удалось найти следующее решение для меня:

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)

Но я не уверен, что это хороший способчтобы выполнить мою задачу.

0 голосов
/ 28 апреля 2018

Я думаю, что наследуя 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 || {});
        }
    });
});
...