Используйте DataFields в Rest URL в ExtJS для доступа к Context.io API - PullRequest
0 голосов
/ 22 октября 2018

У меня есть два вопроса об API отдыха в EXTJS.

  1. Как я могу использовать поля, чтобы сделать URL-адрес остальных динамическим?
  2. Как добавить ключ аутентификации для доступа к Context.io в моем Rest.Proxy?

Это мое решение, но я не уверен, правильно ли я это сделал или нет.Я довольно новичок в ExtJS, поэтому мой вопрос может быть основным, но я ценю вашу помощь.

Ext.define("EmailFolders", {
  extend: "Ext.data.Model",
  fields: ["id", "label"],

  proxy: {
    type: "rest",
    url: "lite/users/:" + id + "/email_accounts/:" + label + "/folders"
  },

  reader: {
    type: "json"
  },

  headers: {
    CONSUMER_KEY: "KEY FROM CONTEX.IO",
    CONSUMER_SECRET: "SECRET FROM CONTEXT.IO"
  }
});

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете использовать store.getProxy(), чтобы сделать URL-адрес остальных динамическим и передать ключи аутентификации в заголовках.У прокси есть методы

  1. proxy.setUrl() для установки значения URL.
  2. proxy.setHeaders() для установки значения заголовков.

Вы можете проверить здесь с работающей скрипкой

КОД SNIPPET

Ext.application({
    name: 'Fiddle',

    launch: function () {
        let url = 'https://jsonplaceholder.typicode.com/users';
        // Set up a model to use in our Store
        Ext.define('User', {
            extend: 'Ext.data.Model',

            proxy: {
                type: 'ajax',
                reader: {
                    type: 'json',
                    rootProperty: ''
                }
            }

        });

        Ext.define('MyStore', {
            extend: 'Ext.data.Store',
            model: 'User',

            listeners: {
                beforeload: function (store) {
                    var proxy = store.getProxy();

                    //if you want, you can also set here url inside of beforeload
                    //proxy.setUrl(url);

                    /*
                     * You can use {proxy.setHeaders} to set the values from CONTEX.IO
                     * After ajax request see your request parameter in network analysis below 2 headers are passed in request header
                     */
                    proxy.setHeaders({
                        CONSUMER_KEY: "KEY FROM CONTEX.IO",
                        CONSUMER_SECRET: "SECRET FROM CONTEXT.IO"
                    });

                }
            }
        });

        let store = new MyStore();
        //Set the dynamic url here
        //This {url} will be dynamic whatever you want to pass
        store.getProxy().setUrl(url);

        store.load(function (data) {
            console.log(data);
            alert('Open console to see reposne..!')
        });

        /*
         You can also pass url inside of load funtion
        */
        new MyStore().load({
            url: url + '/' + 1,
            callback: function (data) {
                console.log(data);
            }
        });
    }
});
...