这是我的模特
Ext.define('ThemeApp.model.peopleModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id' },
{ name: 'subject' },
{ name: 'description'}
],
proxy: {
type: 'rest',
format: 'json',
limitParam:"",
filterParam: "",
startParam:'',
pageParam:'',
url:'http://localhost:3000/issues/1',
/*
api: {
read : 'http://localhost:3000/issues'
},*/
headers: {'Content-Type': "application/json" },
//url : 'http://api.soundcloud.com/tracks?q=allah%20dita%20rehman%20khan&client_id=0b19b8dc2526b43eae19f03b2eab6798&format=json&_status_code_map[302]=200',
reader: {
type: 'json',
rootProperty:'issues'
},
writer: {
type: 'json'
}
}});
这是我的商店:
Ext.define('ThemeApp.store.peopleStore', {
extend: 'Ext.data.Store',
model: 'ThemeApp.model.peopleModel',
storeId: 'peopleStore',
pageSize: 500,
autoLoad: true });
我要做的就是使用Rest代理填充此网格,并测试rest代理的GET和POST方法。我能够使用这个应用程序准备soundcloud api,但是当我尝试阅读Redmine问题时(localhost:3000 / issues.xml) 我收到了这个错误:
http://localhost:3000/issues.json仅使用较少的数据看起来像http://www.redmine.org/issues.json。还有Localhost:300 / issue.json做exsist!
任何想法?
答案 0 :(得分:1)
您正在尝试针对Redmine API执行CORS次请求。不幸的是,Redmine目前不支持CORS,因此如果没有进一步的基础设施更改(如果做错了可能会危及安全性),这是不可能的。
有一些插件将RedS响应中的CORS头添加,但是从我所看到的,他们还没有完全确保安全的系统。
鉴于这些限制,只有当您的ExtJS应用程序从与Redmine相同的主机和端口提供服务时,您对Redmine的请求才有效,以便它在相同的源中运行,因此无需任何显式的CORS支持即可运行。您可以在Redmine和ExtJS应用程序的静态文件之前使用代理服务器(例如nginx)启用此功能,以确保相同的来源。
答案 1 :(得分:0)
http://localhost:3000/issues.json
存在,但
http://localhost:3000/issues/1.json
不存在。
为了让rest api工作,你需要使用url重写。
如果你有一个扁平的.json文件,你不应该使用rest代理而是使用json代理,你就不会遇到这个问题。