如何在 ExtJS 4.1.0 代理或读取器中更改请求 URI

How to change request URI in ExtJS 4.1.0 Proxy or Reader

本文关键字:读取 URI 请求 代理 ExtJS      更新时间:2023-09-26

事实上,带有 Rest 代理和 Json 读取器的 ExtJS 4.1 要求像这样输入 URI(虽然是 urlencode):

http://localhost:8000/api/v1/choice/?filter=[{"property":"question_id","value":2}]

我的服务器希望过滤器请求如下所示:

http://localhost:8000/api/v1/choice/?question_id=2

我已经查看了代理的filterParam配置,但它似乎无关紧要。有没有一种实用的方法来实现服务器所需的请求 URI?

跟随并不漂亮,但它有效。现在修复该死的商店...

/**
         * Customized to send ../?prop=val&prop2=val2 urls.
         */
        buildUrl: function(request) {
            var url = this.url;
            var filters = eval(request.params['filter']);
            if (filters) {
                delete request.params['filter'];
                url += '?'
                for (var i = 0; i < filters.length; i++) {
                    var filterString = filters[i].property + "=" + filters[i].value;
                    if (url.slice(url.length-1) === '?') {
                        url += filterString;
                    } else {
                        url += '&' + filterstring;
                    } 
                }
            };
            return url;
        },

没有简单(简单)的方法。您必须扩展现有的Proxy类。看看Ext.data.proxy.ProxyExt.data.proxy.Server的源代码。首先查看函数getParamsbuildUrl