ExtJS REST代理将所有模型属性附加到PUT方法上的查询字符串

时间:2014-06-04 13:44:20

标签: json rest extjs sencha-touch

当我在Sencha Touch 2.3.1中调用 mystore.sync()时,ExtJS会将定义的代理URL附加到我的模型类的所有属性中。例如,它向服务器发送PUT方法,如: myserver / restapi / area / students?prop1 = AAA& prop2 = BBB& prop3 = CCC& prop4 = DDD& prop5 = EEE

我认为这种行为很尴尬并且它重复了请求大小,因为JSON对象已经插入到请求体内:

请求标头= Content-Type:application / json

请求正文= {"标识":" 1"" PROP1":" AAA"" PROP2":" BBB"" Prop3":" CCC"" Prop4":" DDD"" Prop5&#34 ;: " EEE"}

所以,想象一下,如果我有很多大尺寸的字符串属性......它可能会达到URL大小限制......

在寻找解决方案时,我尝试在REST代理中将 appendId 属性的值更改为 false ,但它刚刚删除了此URL的一个参数(idProperty) ...

有人知道吗,我该怎么改变它?这是默认行为吗?

我的代码示例。

我有商店:

Ext.define('MyStore', {
    extend: 'Ext.data.Store',
    config: {
        model: 'MyModel',
        proxy: {
            type: 'rest',
            appendId: false, //I tried to turn it to false to it doesn't change my URL
            url: 'http://myserver/restapi/area/students
        }
    }
});

模型类:

Ext.define('MyModel', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            'Id',
            'Prop1',
            'Prop2',
            'Prop3',
            'Prop4',
            'Prop5'
        ],
        idProperty: [
            'Id'
        ]
    }
});

谢谢!

0 个答案:

没有答案