Json ExtJS REST代理将所有模型属性附加到PUT方法上的查询字符串
在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对象已经插入到请求体中: 请求头= 内容类型:application/json 请求正文= {“Id”:“1”,“Prop1”:“AAA”,“Prop2”:“BBB”,“Prop3”:“CCC”,“Prop4”:“DDD”,“Prop5”:“EEE”} 想象一下,如果我有很多大尺寸的字符串属性。。。它可能达到URL大小限制 为了寻找解决方案,我试图在REST代理中将appendId属性的值更改为false,但它刚刚删除了此URL的一个参数(idProperty) 有人知道吗,我怎样才能改变它?这是默认行为吗 我的代码示例 我有一个商店:Json ExtJS REST代理将所有模型属性附加到PUT方法上的查询字符串,json,rest,extjs,sencha-touch,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对象已经插入到请求体中: 请求头= 内容类型:application/json 请求正文= {“Id”:“1”,
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'
]
}
});
谢谢大家! 将属性附加到PUT请求的URL不是默认行为。您对
Ext.data.proxy.Rest
或Ext.Ajax
对象有任何覆盖吗?你有没有试过用一个复制这个问题?我只是过度使用Ext.data.Store,但我只是添加了一些自定义事件,没有其他。。。现在,我解决了将代理放在模型类中的问题,它对我来说运行良好。我发现了这个问题。我使用“setExtraParam”方法来代理。所以,现在我意识到代理在任何请求中都会发送这些参数。我使用extraParams是因为我的RESTAPI期望一些参数来处理集合的返回。