Пользовательские заголовки http с JsonRest Store (dojo) - PullRequest
4 голосов
/ 23 марта 2012

Мне было интересно, есть ли способ установить мои собственные пользовательские заголовки http в запросе Get ajax (xhr.get), который автоматически создает хранилище JsonRest.

Есть связанная тема, но без отличного решения: Сетка данных Dojo с пользовательскими заголовками HTTP

Я видел реализацию JsonRest в dojo.store.JsonRest, включая конструктор, и неясно, сможем мы это сделать или нет (но я так не думаю).Пример используемого магазина JsonRest:

var store = new JsonRestStore({target: "/Table/" });

1 Ответ

7 голосов
/ 23 марта 2012

Я бы выполнил подкласс dojo.store.JsonRest, как вы можете видеть в этом jsFiddle .

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. Проверьте заголовки запроса:

enter image description here

...