我有一个基于瓶子的HTTP服务器,它主要是对JSON数据进行洗牌。当我在Python 2.7中运行它时,它运行得很好,在我的路由处理程序中,我可以通过bottle.request.json
访问JSON数据。但是,当我在Python 3.4 bottle.request.json
下运行它时None
。
我已经检查了HTTP流量,在两种情况下它都完全相同(因为那是在非Python依赖客户端的控制之下所预期的。)
在这两种情况下,我也看到JSON数据 到达瓶子。如果我打印出bottle.request.params.keys()
,我会在两种情况下看到字符串ified JSON作为列表中的唯一条目。在这两种情况下,字符串都是相同的。但是,出于某种原因,Python 2版本正在识别JSON数据,而Python 3版本则不是。
奇怪的是,这曾经起作用,但最近在我的代码或瓶子(或两者)中的一些变化已经破坏了。但是,查看我的代码,我无法看到我可能已经做了什么来创建问题。
有谁知道发生了什么事?这是我在客户端,瓶子配置端做错了,还是瓶子缺陷?我在谷歌和瓶子问题跟踪器上搜索了这个问题,但无济于事。
答案 0 :(得分:0)
事实证明这与瓶子无关。问题的最终原因是客户端请求由于defect in an emacs lisp HTTP library而有两个Content-Type
标头。令人尴尬的是,我已经知道这个缺陷很长一段时间了,但我认为我已经适当地解决了这个问题。
我不是100%确定为什么我会看到Python 2和3之间的差异,但我现在的猜测是它与版本之间的WSGI机制中的其他良性变化有关。