宜兴通达竭诚为您服务。

Odoo 8.0远端调用http.route时提示404

2016-12-15 07:12:00     作者: Administrator     来源:互联网,版权归作者所有     浏览次数: 396     文字大小:【】【】【

      最近在做一个项目时,因为有些数据需要提供给其它客户端查询,本来也可以通过xmlrpc来操作,但这样前端写js的人就需要对oe的数据表对象关系非常清楚,为了简化前端调用,我们最终采用的是在服务器端建立一些api接口,由前端通过ajax来调用。

开始在模块中通过http.route建立了一些url接口,服务器已经根据前端需求返回指定的json格式,但在测试时,发现前端调用时,总是返回404的错误,调试、追踪了大半天,最终发现问题是在数据库上面,因为我在oe上建了两个数据库,正常通过浏览器登录时,我们是先选择数据库,选择后oe会检查所选数据库已经安装的模块,并将所有已安装模块中的http.route建立一个映射表,当后面再有url访问时,通过这个映射表来确认调用哪个py方法。

如果没有前面的选择数据库动作,直接通过url访问时,此时oe并不知道你要访问哪个数据库,也无法建立url与py方法的映射,所以直接返回了404的错误。

最终权宜之计是我删除了其它的数据库,只保留了一个数据库,这样oe在启动时,就会直接加载此数据库的url映射,就可以正常访问。

但这样子理解,又有一个问题不明白,如果说数据库多的时候,系统不知道使用哪个数据库中的url映射,那为什么系统自带的一些url又没问题,比如/web/login,当我们使用此url时,oe能正确定位到py方法中,不知道是不是/web开头的url哪里有特殊处理?

这个问题后续再仔细了解。。。

后来查看源码,原来在openerp.conf.server_wide_modules列表中,是有记录预加载的模块的地方,web模块是属于与数据库无关的预加载模块,所以没有选择数据为时,系统也能访问url对应的py方法。这个列表可以在oe服务器运行时,通过--load参数来指定,所以我们自己的模块要在oe启动时就响应url请求,则只要预加载自己的模块即可。

相关文章 评论

服务原则及地区范围

宜兴通达团队,在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我团队愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达团队提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: